Utilisation de l'analyseur statique PVS-Studio dans le développement de systèmes embarqués en C et C ++

Dans cet article, vous apprendrez à exécuter une vérification de projet intégrée et à utiliser le rapport de l'analyseur. L'analyseur PVS-Studio prend en charge un certain nombre de compilateurs pour les systèmes embarqués. Dans la version actuelle, il est possible de vérifier les projets lors de la construction avec l'un des compilateurs suivants pour Windows, Linux et macOS:


L'installation


La procédure d'installation dépend du système d'exploitation sous lequel vous développez. Sous Linux, vous pouvez installer l'analyseur à partir du référentiel ou du package d'installation.

Exemple pour les systèmes basés sur Debian:

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 

ou

 sudo gdebi pvs-studio-VERSION.deb 

Pour macOS, l'installation et la mise à jour peuvent être effectuées depuis Homebrew :

 brew install viva64/pvs-studio/pvs-studio brew upgrade pvs-studio 

La deuxième option consiste à installer le package à partir de dmg ou à le décompresser manuellement de l'archive.

Sous Windows, l'installation s'effectue Ă  l'aide du programme d'installation:


Vous pouvez télécharger des packages d'installation pour tous les systèmes pris en charge et, si nécessaire, demander une clé d'essai sur la page " Télécharger et essayer PVS-Studio ".

Après l'installation, entrez la clé de licence. Vous pouvez trouver des informations sur la façon de procéder sur différentes plates-formes, sur la page de documentation " Comment entrer la licence PVS-Studio, et que faire ensuite ."

Vérification du projet


La vérification de projet pour les systèmes embarqués peut être effectuée de la même manière que dans le cas du développement sous Windows, Linux et macOS.

Les options de lancement pour Linux sont décrites dans l'article " Présentation de l'analyseur statique PVS-Studio lors du développement de programmes C ++ dans l'environnement Linux ". N'oubliez pas qu'étant donné que la compilation croisée est utilisée pour générer sous Embedded et que le nom du compilateur peut être non standard, vous devrez peut-être le spécifier lors de l'analyse du projet. Pour ce faire, utilisez l' option de ligne de commande –compiler ou –c :

 pvs-studio-analyzer analyze -c MyCompiler 

Utilisez ce paramètre lorsque l'analyseur ne peut pas déterminer le type de compilateur utilisé, c'est-à-dire lorsque l'erreur "Aucune unité de compilation trouvée" est émise.

Lors de la compilation croisée, puisque la plate-forme cible est différente de celle sous laquelle l'assemblage a lieu, avec le compilateur, vous devrez peut-être spécifier la plate-forme cible à l'aide du paramètre --platform , ainsi que le type de préprocesseur ( --preprocessor ).

Plates-formes prises en charge: win32, x64, linux32, linux64, macos, arm.

Préprocesseurs pris en charge: gcc, clang, keil.

Par défaut, Linux sélectionne la plateforme linux64 et le préprocesseur gcc .

Si vous utilisez Windows, vous pouvez vérifier le projet en mode de surveillance de compilation. Pour ce faire, exécutez l'utilitaire " C and C ++ Compiler Monitoring UI ", qui est installé avec l'analyseur. Pour démarrer la surveillance, allez dans le menu Outils et cliquez sur Analyser vos fichiers ... Une boîte de dialogue s'ouvre:


Cliquez sur le bouton " Démarrer la surveillance " et exécutez la génération. Après son achèvement, cliquez sur le bouton " Arrêter la surveillance " dans la boîte de dialogue dans le coin inférieur droit de l'écran:


Le résultat du test peut être consulté dans la fenêtre principale de l'utilitaire " C and C ++ Compiler Monitoring UI ".

Vous pouvez également exécuter une analyse à partir de la ligne de commande. Pour cela, l'utilitaire CLMonitor est utilisé. Vous pouvez démarrer la surveillance avec la commande:

 CLMonitor.exe monitor 

Une fois l'assemblage terminé, vous devez exécuter l'utilitaire en mode analyse:

 CLMonitor.exe analyze -l "<path>\out.plog" 

L'analyseur vérifiera le projet et enregistrera les résultats dans le fichier spécifié dans le paramètre -l .

Voir également la section de documentation " Système de surveillance de la compilation dans PVS-Studio ".

Travailler avec des rapports


Pour afficher le rapport sous Linux, vous devez convertir le fichier obtenu à la suite de l'analyseur dans l'un des formats pris en charge à l'aide de l' utilitaire plog-converter . Vous pouvez obtenir le rapport au format HTML avec la possibilité d'afficher le code source avec la commande suivante:

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

La conversion des rapports est décrite plus en détail dans l'article " Connaissance de l'analyseur statique PVS-Studio lors du développement de programmes C ++ sous Linux ".

Sous Windows, il existe également un utilitaire PlogConverter qui vous permet de convertir des fichiers de rapport de la même manière:

 PlogConverter.exe <path>\out.plog --renderTypes= FullHtml --analyzer=GA:1,2 

ou

 PlogConverter.exe D:\Projct\out.plog -t FullHtml -a GA:1,2 

De plus, un rapport au format plog peut être visualisé à l'aide de l'utilitaire " C and C ++ Compiler Monitoring UI " via le menu File-> Open PVS-Studio Log ...

Un exemple:


Si nécessaire, à partir de cet utilitaire, vous pouvez exporter le rapport vers l'un des formats pris en charge via le menu Fichier .

Norme MISRA


PVS-Studio classe les alertes selon CWE et SEI CERT , ce qui convient aux tests de sécurité statiques ( SAST ) des applications ordinaires. Cependant, les systèmes embarqués ont des exigences de sécurité légèrement différentes qui sont couvertes par la norme MISRA spécialement développée. La version actuelle de l'analyseur prend en charge une partie des règles de MISRA C et MISRA C ++, la liste des diagnostics peut être consultée ici , et elle est en constante expansion.

L'utilisation de règles MISRA lors de la vérification de projets qui ne sont pas destinés à être intégrés est souvent injustifiée. Cela est dû aux spécificités de la norme. Dans la plupart des cas, si le code n'a pas été écrit à l'origine dans l'attente de la conformité MISRA, il y aura beaucoup d'avertissements faux et inutiles lors de la vérification. Par conséquent, les règles MISRA sont désactivées par défaut.

Pour activer l'analyse MISRA sous Linux, vous devez exécuter l'analyse avec le commutateur -a et passer un paramètre numérique qui définit le mode requis. Ce paramètre est une combinaison de champs de bits:

 -a [MODE], --analysis-mode [MODE] MODE defines the type of warnings: 1 - 64-bit errors; 2 - reserved; 4 - General Analysis; 8 - Micro-optimizations; 16 - Customers Specific Requests; 32 - MISRA. Modes can be combined by adding the values Default: 4 

Exemple de lancement (diagnostics GA et MISRA inclus):

 pvs-studio-analyzer analyze -a 36 -o /path/report.log 

Lorsque vous utilisez un convertisseur plog , vous devez également indiquer que les diagnostics MISRA doivent être inclus dans le rapport:

 plog-converter -a MISRA:1,2,3 -m misra .... 

Sous Windows, vous pouvez utiliser la boîte de dialogue des paramètres de l'utilitaire " UI de surveillance du compilateur C et C ++ ":


Plus de détails sur la prise en charge de MISRA sont décrits dans l'article " PVS-Studio: Prise en charge des normes de codage MISRA C et MISRA C ++ ".

Conclusion


Dans cet article, nous avons passé en revue les capacités de l'analyseur PVS-Studio pour tester des projets axés sur les systèmes embarqués. Si vous avez besoin d'informations plus détaillées sur la façon d'utiliser l'analyseur, je vous recommande de lire les articles suivants:




Si vous souhaitez partager cet article avec un public anglophone, veuillez utiliser le lien vers la traduction: Yuri Minaev. Utilisation de PVS-Studio Static Analyzer dans le développement C et C ++ pour les systèmes embarqués

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


All Articles