Dans cet article, je vais vous parler de PVS-Studio, un analyseur de code C et C ++, et vous montrer comment l'utiliser dans l'environnement Visual C ++. Ce guide est spécifiquement destiné aux utilisateurs débutants.
Installation de l'analyseur
PVS-Studio prend en charge Microsoft Visual Studio 2019, 2017, 2015, 2013, 2012 et 2010. Consultez la
documentation pour la configuration système requise. Actuellement, PVS-Studio peut analyser des projets écrits en C, C ++, C # et Java. Toutefois, cet article se concentre sur les programmeurs qui travaillent dans Visual C ++ et recherchent de l'aide pour démarrer avec l'analyseur.
Le package d'installation peut être téléchargé
ici . Après l'avoir exécuté, vous aurez le choix entre plusieurs options d'intégration (figure 1). Les options non disponibles sont grisées.
Figure 1. Fenêtre de sélection des composants d'intégration.Après avoir installé PVS-Studio, ouvrez la fenêtre À propos de Visual Studio et assurez-vous que l'analyseur est présent parmi les produits installés.
Vérification d'un projet
Une fois l'installation terminée, vous pouvez continuer à vérifier votre projet. Vous pouvez également essayer d'analyser la solution entière. Pour ce faire, cliquez sur Extensions → PVS-Studio → Vérifier → Solution (figure 2).
Figure 2. Vérification d'une solution avec PVS-Studio.Si vous rencontrez des difficultés pour exécuter la vérification, consultez la section "
PVS-Studio: Dépannage " sur notre site Web. Ce ne sont pas des conseils stupides comme "assurez-vous que la fiche est branchée dans la prise". La section décrit les problèmes typiques signalés par nos utilisateurs et les moyens de les résoudre.
Gestion de la liste des avertissements
Une fois la vérification terminée, les messages de diagnostic apparaîtront dans une fenêtre spéciale. Cette fenêtre contient de nombreux éléments, qui servent tous à manipuler la liste afin que vous puissiez afficher uniquement les avertissements qui vous intéressent. Au début, cependant, cela pourrait sembler quelque peu compliqué.
Figure 3. Fenêtre des avertissements. Cliquez sur l'image pour agrandir.La vue d'ensemble complète des éléments de la fenêtre se trouve dans la
documentation , mais maintenant nous allons nous concentrer uniquement sur les éléments de base:
- Niveaux de certitude des avertissements. La capture d'écran ci-dessus montre les niveaux moyen et élevé activés. Le niveau bas traite davantage des «odeurs de code» et des avertissements qui, malheureusement, ont tendance à produire trop de faux positifs. Pourquoi y a-t-il tant d'avertissements de bas et moyen niveaux mais si peu d'avertissements de haut niveau? La réponse est que les diagnostics MISRA ont été activés, qui contiennent des règles telles que "la fonction ne doit avoir qu'un seul point de sortie". Bien sûr, vous n'avez normalement pas besoin de ces diagnostics, ils sont donc désactivés par défaut. Remarque: " Comment vérifier rapidement les avertissements intéressants donnés par l'analyseur PVS-Studio pour le code C et C ++? ".
- Le filtre. Vous pouvez filtrer les messages par code, CWE, texte, projet ou fichier.
- Le numéro de la ligne de déclenchement. Certains diagnostics peuvent faire référence à un certain nombre de lignes: ces avertissements ont des points de suspension à côté du numéro de ligne.
SAST
PVS-Studio est un outil de test statique de sécurité des applications (SAST), ce qui signifie qu'il peut détecter les vulnérabilités potentielles dans le code source et afficher l'identificateur de faiblesse correspondant selon une classification particulière.
PVS-Studio prend en charge les classifications de faiblesse suivantes:
- CWE
- SEI CERT
- Misra
Pour activer les codes CWE, ouvrez le menu déroulant de la fenêtre de l'analyseur, puis cochez Afficher les colonnes> CWE
Figure 4. Activation des codes CWE dans le menu déroulant.Une autre façon de le faire est Extensions> PVS-Studio> Afficher les codes CWE dans la fenêtre de sortie sur la barre de menus de Visual Studio
Figure 5. Sous-menu PVS-Studio dans le menu Extensions.Contrairement à cela, les diagnostics MISRA sont activés dans la fenêtre d'options:
Figure 6. Liste des faiblesses détectables.Vous pouvez en savoir plus sur ces classifications
ici .
Vérification des projets à partir de la ligne de commande
PVS-Studio_Cmd.exe est un utilitaire pour vérifier les projets et solutions C ++ .vcxproj à partir de la ligne de commande. Cela peut être utile si vous souhaitez automatiser le processus d'analyse. Le programme se trouve dans le répertoire d'installation, qui est par défaut «C: \ Program Files (x86) \ PVS-Studio».
L'utilitaire a plusieurs
paramètres , mais vous n'en aurez besoin que de trois pour commencer:
- --target: le fichier du projet ou de la solution à vérifier.
- --output: le fichier plog dans lequel stocker le rapport d'analyse.
- --progress: suivre la progression de l'analyse.
Voici ce que vous verrez après avoir commencé la vérification:
Figure 7. Sortie de l'utilitaire PVS-Studio_Cmd.exeUne fois la vérification terminée, un fichier plog contenant le rapport d'analyse sera créé dans le répertoire spécifié dans les paramètres de démarrage. Ce rapport peut être converti dans d'autres formats à l'aide de l'utilitaire PlogConverter.exe, et si vous souhaitez ouvrir le rapport dans l'EDI, double-cliquez simplement sur le fichier plog dans l'Explorateur Windows.
Le fichier de rapport peut également être ouvert à partir du menu Extensions: Extensions> PVS-Studio> Ouvrir / Enregistrer> Ouvrir le rapport d'analyse ...
Figure 8. Ouverture d'un rapport d'analyse à partir du menu du plugin.Consultez la
documentation pour plus de détails sur l'utilitaire et ses paramètres.
Suppression des faux positifs
L'analyseur fournit une variété de moyens pour supprimer les faux positifs. Ils sont décrits en détail dans les sections suivantes:
- Réglage fin .
- Suppression en masse , ce qui est particulièrement utile lorsque vous souhaitez supprimer uniquement les avertissements qui font référence à du code nouveau ou modifié.
Exemple d'avertissement
Jetons un coup d'œil à un exemple d'avertissement émis par l'analyseur. L'extrait de code suivant est extrait du projet ReactOS:
VOID NTAPI AtapiDmaInit(....) { .... ULONG treg = 0x54 + (dev < 3) ? (dev << 1) : 7; .... }
Message de diagnostic de PVS-Studio: V502 L'opérateur '?:' Fonctionne peut-être d'une manière différente de celle attendue. L'opérateur '?:' A une priorité inférieure à l'opérateur '+'. uniata id_dma.cpp 1610
L'expression
0x54 + (dev <3) sera toujours évaluée à
vrai : la constante non nulle
0x54 est d'abord ajoutée au résultat de l'expression
(dev <3) , qui peut être évaluée à 0 ou 1, et alors seulement est la valeur résultante par rapport à zéro.
Voici à quoi ressemble la bonne version:
VOID NTAPI AtapiDmaInit(....) { .... ULONG treg = 0x54 + ((dev < 3) ? (dev << 1) : 7); .... }
Nous avons résolu le problème en plaçant l'opération
'?:' Entre parenthèses afin que son résultat dépende désormais du résultat de l'expression
(dev <3) .
Conclusion
C'était une brève introduction à la prise en main de PVS-Studio pour Visual C ++. Bien sûr, il ne couvre pas tous les aspects, alors bienvenue sur notre
blog , où nous expliquons en détail comment travailler avec l'analyseur et voyons la
documentation pour une description complète des messages de diagnostic et des paramètres de l'outil.