Connaissance de l'analyseur statique PVS-Studio lors du développement de programmes C ++ sous Linux

PVS-Studio prend en charge l'analyse de projets en C, C ++, C # et Java. Vous pouvez utiliser l'analyseur sous les systèmes Windows, Linux et macOS. Cet article se concentrera sur l'analyse de code écrit en C et C ++ dans un environnement Linux.

L'installation


Il existe plusieurs façons d'installer PVS-Studio sous Linux, selon le type de distribution. Le moyen le plus pratique et préféré est d'utiliser le référentiel: cela vous permet de mettre à jour automatiquement l'analyseur lorsque de nouvelles versions sont publiées. La deuxième option consiste à utiliser le package d'installation, qui peut être téléchargé ici .

Les commandes que vous devez exécuter pour installer dépendent de la distribution Linux que vous utilisez. Par exemple, pour les systèmes basés sur Debian, l'installation à partir du référentiel ressemble à ceci:

wget -q -O - https://files.viva64.com/etc/pubkey.txt | sudo apt-key add - sudo wget -O /etc/apt/sources.list.d/viva64.list \ https://files.viva64.com/etc/viva64.list sudo apt update sudo apt install pvs-studio 

Pour installer PVS-Studio Ă  partir du package d'installation, vous pouvez utiliser l'utilitaire gdebi:

 sudo gdebi pvs-studio-VERSION.deb 

Le processus d'installation est décrit plus en détail dans la section " Installation et mise à jour de PVS-Studio sous Linux " de la documentation. Vous pouvez également y trouver des informations sur les systèmes non basés sur Debian.

Après l'installation, vous devez saisir les données de licence. Pour ce faire, utilisez la commande

 pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE] 

Où NOM et CLÉ sont le nom pour lequel la licence est enregistrée et la clé de licence. Le paramètre facultatif –o vous permet de spécifier le chemin par lequel le fichier de licence sera généré. Par défaut, il est stocké dans le répertoire ~ / .config / PVS-Studio / .

Vous pouvez obtenir la clé d'essai sur la page " Télécharger et essayer PVS-Studio ".

Vérification du projet


Après avoir installé l'analyseur, vous pouvez commencer à vérifier les projets. Il existe deux façons principales de procéder:

  1. Surveillance de la compilation;
  2. Démarrage au cours du processus d'assemblage directement à partir du système d'assemblage.

Prenons d'abord la première méthode. Pour démarrer la surveillance sous Linux, vous aurez besoin de l'utilitaire strace . L'analyseur l'utilise pour collecter des informations sur les processus qui ont été lancés lors de l'assemblage du projet.

Le lancement est effectué par la commande suivante:

 pvs-studio-analyzer trace -- make 

Cet exemple utilise build avec make, mais toute autre commande que vous utilisez pour démarrer la build peut remplacer make. Les paramètres de ligne de commande peuvent lui être transmis de la manière habituelle.

Après l'assemblage, strace créera un fichier que l'analyseur utilisera pour vérifier le code source. Vous pouvez exécuter l'analyse avec la commande

 pvs-studio-analyzer analyze -o /path/to/project.log 

La sortie sera un fichier encodé avec les résultats, que vous pouvez convertir en l'un des formats pris en charge. Nous envisagerons de travailler avec des rapports dans la section suivante.

Outre l'utilisation de strace, l'analyse peut également être exécutée sur la base du fichier compile_commands.json (base de données de compilation JSON). De nombreux systèmes de génération vous permettent d'exporter les commandes d'appel du compilateur, ou vous pouvez utiliser l'utilitaire BEAR pour cela. Dans ce cas, vous pouvez exécuter l'analyse avec la commande

 pvs-studio-analyzer analyze –f /path/to/compile_commands.json 

Il est à noter que l'analyseur reconnaît le compilateur utilisé par le nom de son fichier exécutable. Si, lors de la vérification, vous obtenez l'erreur «Aucune unité de compilation trouvée», essayez de spécifier le nom de votre compilateur via le paramètre –compiler ou –c :
 pvs-studio-analyzer analyze -c MyCompiler 

Cela peut être nécessaire lors de la compilation croisée et de l'utilisation de compilateurs avec des noms de fichiers exécutables non standard.

En plus des lancements en mode surveillance, vous pouvez intégrer l'analyseur dans votre système d'assemblage ou IDE. Vous pouvez trouver des exemples de projets avec une intégration déjà configurée sur GitHub dans le référentiel PVS_Studio:


Pour des instructions plus détaillées sur l'exécution de l'analyse sous Linux, consultez la documentation .

Travailler avec des rapports


Après avoir vérifié le projet, l'analyseur crée un rapport codé. Pour le convertir dans l'un des formats pris en charge, utilisez l' utilitaire plog-converter , qui est installé avec PVS-Studio.

L'utilitaire prend en charge les formats suivants:

  • xml - un format pratique pour un traitement supplĂ©mentaire des rĂ©sultats d'analyse, pris en charge par le plugin pour SonarQube;
  • csv est un format texte pour prĂ©senter des donnĂ©es tabulaires;
  • errorfile - format de sortie pour gcc et clang;
  • liste des tâches - format d'erreur qui peut ĂŞtre ouvert dans QtCreator;
  • html - rapport html avec une brève description des rĂ©sultats de l'analyse;
  • fullhtml - rapport html avec tri des rĂ©sultats d'analyse par divers paramètres et navigation dans le code source.

Le format fullhtml est le plus pratique pour afficher le rapport, car il vous permet d'accéder à la ligne de code source dans laquelle l'avertissement s'est produit. La commande suivante vous permet de convertir le rapport de l'analyseur dans ce format:

 plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir 

Une fois la commande exécutée, le répertoire / path / report_dir sera créé, dans lequel se trouveront les fichiers de rapport.

Notez le commutateur -a . Il vous permet de spécifier les avertissements à inclure dans le rapport. C'est pratique si vous devez filtrer la sortie de l'analyseur. L'équipe ci-dessus créera un rapport qui contiendra uniquement les avertissements du groupe d'analyse générale des premier et deuxième niveaux de confiance ( élevé et moyen ).

Exemple de rapport:

Image 9


En cliquant dans la cellule Emplacement du message, vous pouvez accéder à la ligne de code correspondante:

Image 8


Cliquez sur le numéro de diagnostic dans la colonne Code pour ouvrir la documentation décrivant ce diagnostic.

Suppression de la réponse de l'analyseur


Lors de la vérification du code avec un analyseur statique, des faux positifs ou tout simplement des messages indésirables (bruit) sont possibles. PVS-Studio fournit des mécanismes pour supprimer ces avertissements. Pour supprimer individuellement les alarmes, vous pouvez utiliser l'une des méthodes décrites dans la section de documentation " Suppression des fausses alertes ".

De plus, lors de l'analyse d'un ancien code, il peut être nécessaire de supprimer massivement tous les messages. En règle générale, cela est nécessaire pour vérifier uniquement le code qui est ajouté à la base de code existante. Pour cela, le paramètre de suppression de l' utilitaire pvs-studio-analyzer est utilisé .

Vous pouvez supprimer les messages d'un rapport en bloc Ă  l'aide de la commande suivante:

 pvs-studio-analyzer suppress /path/to/report.log 

Les informations sur les messages supprimés sont stockées dans le fichier suppress_base.json , qui se trouve à côté du projet. Ces messages sont exclus du rapport lors des inspections ultérieures.

Ce mécanisme est décrit plus en détail dans la documentation ici .

Conclusion


Il s'agissait d'une brève introduction à l'utilisation de l'analyseur PVS-Studio pour Linux. J'espère que cela a été utile et a répondu aux questions les plus fréquemment posées. Vous pouvez en savoir plus sur le sujet de l'article dans la documentation ici .



Si vous souhaitez partager cet article avec un public anglophone, veuillez utiliser le lien vers la traduction: Yuri Minaev. Prise en main de l'analyseur statique PVS-Studio pour le développement C ++ sous Linux .

Source: https://habr.com/ru/post/fr462661/


All Articles