
Aujourd'hui est un jour important - après 28 versions de la sixième version, nous publions PVS-Studio 7.00, où l'innovation clé est la prise en charge du langage Java. Cependant, en 2018, de nombreux autres changements importants se sont accumulés concernant C ++, C #, l'infrastructure et la prise en charge des normes de codage. Par conséquent, nous attirons votre attention sur une note résumant les principaux changements survenus récemment dans PVS-Studio.
PVS-Studio est un outil pour détecter les erreurs et les vulnérabilités potentielles dans le code source des programmes écrits en C, C ++, C # et Java. Il fonctionne sur Windows, Linux et macOS.
Les capacités de l'analyseur sont bien démontrées par la vaste
collection d'erreurs dans le code que nous avons trouvé lors de la
vérification de divers projets open source.
Nous allons commencer par le changement, en raison duquel, en fait, il a été décidé de changer le numéro de version de 6.x à 7.x. Il s'agit d'un support dans l'analyseur de langage Java, que nous
préparons depuis longtemps.
Java
La chose la plus importante dans l'analyseur Java est qu'elle est apparue :). Nous invitons les développeurs Java à télécharger l'outil et à découvrir les projets sur lesquels ils travaillent.
Nous avons mis à la disposition des utilisateurs les moyens les plus courants d'intégrer l'analyseur dans le système d'assemblage:
- Plugin pour Maven.
- Plugin pour Gradle.
- Plugin pour IntelliJ IDEA.
Dans le cas de l'utilisation de systèmes d'assemblage auto-écrits, il est possible d'exécuter l'analyseur directement en répertoriant les sources et le
chemin de classe .
Vous pouvez trouver des informations détaillées sur toutes les méthodes de démarrage de l'analyseur sur la page de documentation "
Comment démarrer PVS-Studio Java ".
Nous ne pouvions pas ignorer la plate-forme de contrôle de la qualité du code SonarQube, si populaire parmi les développeurs Java, nous avons donc ajouté la prise en charge du langage Java à notre
plug-in SonarQube .
C, C ++
En 2018, notre équipe a activement travaillé au développement de l'analyseur C ++. De nombreux nouveaux diagnostics sont apparus, ainsi que des
algorithmes améliorés qui vous permettent de collecter et de traiter les informations extraites de l'arbre de syntaxe.
CWE, CERTLes messages de l'analyseur C ++ (comme l'analyseur C #) ont été classés en fonction de l'énumération commune des faiblesses (
CWE ). CWE est un système de classification des vulnérabilités potentielles et confirmées. Il est pris en charge par la communauté pour identifier les problèmes logiciels et créer des outils automatisés qui peuvent être utilisés pour identifier et résoudre ces problèmes.
De plus, les messages ont été classés selon la norme de codage CERT C et la norme de codage CERT C ++.
SEI CERT Coding Standards est un ensemble de normes pour l'écriture de logiciels (logiciels) en C, C ++, Java et Perl, développé par le CERT Coordination Center (CERT Coordination Center, CERT / CC) pour augmenter la fiabilité et la sécurité du logiciel.
La classification des diagnostics C et C ++ en fonction de ces avertissements permet d'utiliser PVS-Studio comme
solution SAST .
MisraEn 2018, l'analyseur de code statique PVS-Studio a commencé à classer ses avertissements selon les normes MISRA C et MISRA C ++. Grâce à la prise en charge de ces normes, l'analyseur est devenu possible d'utiliser efficacement pour améliorer la sécurité, la portabilité et la fiabilité des programmes pour les systèmes embarqués.
Plus de détails: "
PVS-Studio: prise en charge des normes de codage MISRA C et MISRA C ++ ".
Le support MISRA est devenu pertinent dans le cadre du développement dans l'analyseur du support pour divers systèmes embarqués, qui sera discuté dans la section suivante de l'article.
Développement embarquéEn 2018, les éléments suivants ont été pris en charge dans l'analyseur PVS-Studio:
- Windows IAR Embedded Workbench, compilateur C / C ++ pour ARM C, C ++
- Windows / Linux Keil µVision, DS-MDK, ARM Compiler 5/6 C, C ++
- Windows / Linux Texas Instruments Code Composer Studio, Outils de génération de code ARM C, C ++
- Windows / Linux / macOS. GNU Arm Embedded Toolchain, compilateur Arm Embedded GCC, C, C ++
Deux notes sur la prise en charge des systèmes embarqués:
- L'analyseur de code statique PVS-Studio 6.22 est adapté aux compilateurs ARM (Keil, IAR) .
- PVS-Studio a introduit la prise en charge de la chaîne d'outils intégrée GNU Arm .
Extension d'annotation personnaliséeParfois, les projets utilisent leurs propres implémentations de diverses fonctions système, par exemple
memcpy ,
malloc , etc. L'analyseur est très bon pour rechercher des erreurs en utilisant des fonctions standard, mais il était impossible d'utiliser de tels algorithmes dans le code utilisateur jusqu'à récemment. Maintenant, en utilisant l'annotation
V_FUNC_ALIAS, vous pouvez faire correspondre les noms de vos fonctions à celles du système.
Format de commentaire:
- Implémentation de clé - définit le nom d'une fonction standard pour laquelle un alias est défini.
- Touche de fonction - définit le nom d'alias. La signature de la fonction dont le nom est spécifié dans cette clé doit correspondre à la signature de la fonction spécifiée dans la clé d'implémentation.
- La classe clé est le nom de la classe. Peut être absent.
- La clé d' espace de noms est le nom de l' espace de noms. Peut être absent.
Prenons un exemple:
L'analyseur va maintenant gérer les appels à la fonction
MyMemCpy de la même manière que les appels à
memcpy . Par exemple, un avertissement V512 sera émis pour un tel code:
int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int));
C #
Cette année, aucun changement significatif n'a été apporté à l'analyseur C #. Des améliorations ont été apportées aux diagnostics et aux corrections de bogues. Les messages de l'analyseur C #, comme l'analyseur C ++, ont été classés en fonction de l'énumération commune des faiblesses (
CWE ). La correspondance des diagnostics C # avec les identificateurs CWE est donnée
ici (voir diagnostics avec les numéros 3xxx).
Nous prévoyons de revenir à un développement plus actif de l'analyseur C # en 2019. Il est prévu de développer de nouveaux diagnostics et d'améliorer le mécanisme d'analyse des flux de données (Data-Flow Analysis).
Convertisseurs de rapports
Utilitaires PlogConverter.exe et plog-converter sont inclus dans les distributions PVS-Studio pour Windows et Linux / macOS, respectivement. Le code source de ces utilitaires est également disponible sur
GitHub .
Avec l'avènement de PVS-Studio pour Java, nous avons repensé la mise en évidence du code pour C, C ++, C # et ajouté Java au format FullHtml (
pour un navigateur Web ).
De plus, pour le rapport dans ce format, la colonne MISRA a été ajoutée:
Comme l'ID CWE, la colonne MISRA est facultative et est incluse par les chercheurs en sécurité de code lors de l'examen des résultats d'analyse.
Plugins SonarQube
1. Mise à jour complèteNous avons réécrit nos plugins en utilisant la nouvelle API. Cela a permis d'ajouter de nouvelles fonctionnalités et d'assurer la compatibilité avec SonarQube 7.x. La version minimale prise en charge est désormais
SonarQube 6.7 LTS .
2. PVS-Studio pour JavaLe support de diagnostic pour le langage Java a été ajouté à la nouvelle version des plugins. Vous pouvez maintenant ajouter PVS-Studio à d'autres outils de contrôle qualité de votre projet Java.
3. Norme MISRANous avons récemment annoncé la
prise en charge des normes MISRA C et MISRA C ++. Les nouveaux plugins ont également leur support. Par exemple, un paramètre a été ajouté (en plus de CWE):
sonar.pvs-studio.misra=active
qui comprend l'ajout de l'identifiant MISRA aux avertissements de l'analyseur:
Indépendamment de ce paramètre, une recherche sera disponible pour les
balises misra et
pvs-studio # misra dans les résultats d'analyse. Des informations sur le nombre d'alertes MISRA trouvées ont également été ajoutées aux mesures, qui seront discutées plus tard.
4. Nouvelles mesuresDans le menu
Projets -> Votre projet -> Mesures, diverses métriques de code sont disponibles, parmi lesquelles diverses informations de PVS-Studio:
Pour chacune des mesures, vous pouvez créer des graphiques et surveiller la dynamique de l'apparition de divers groupes d'avertissement de l'analyseur.
4. Transitions multilignesCertains diagnostics de l'analyseur émettent des avertissements sur plusieurs lignes du fichier. Parfois, ils sont très éloignés. Dans la nouvelle version, nous avons ajouté des transitions multilignes:
SonarQube prend également en charge les transitions entre différents fichiers. Plus tard, nous ajouterons de telles transitions pour le diagnostic, dans lesquelles il y a une analyse intermodulaire.
6. DocumentationLa documentation a subi des changements majeurs. PVS-Studio est un produit multiplateforme et multilingue, donc tous les traitements visaient à rédiger des instructions plus générales et compréhensibles pour travailler sur un système particulier.
SAST
Jusqu'à récemment, dans nos articles, nous positionnions PVS-Studio comme un outil de détection des erreurs de code. Dans le même temps, nous n'avons presque pas considéré PVS-Studio dans le contexte de la sécurité. Cette année, nous avons corrigé cette situation et examiné l'outil du point de vue des tests de sécurité des applications et des pratiques DevSecOps.
PVS-Studio est un outil pour les tests statiques de sécurité des applications (Static Application Security Testing, SAST). En d'autres termes, l'analyseur PVS-Studio détecte non seulement les fautes de frappe, le code mort et d'autres erreurs, mais également les vulnérabilités potentielles.
Pour la commodité des spécialistes qui utiliseront PVS-Studio comme outil SAST, l'analyseur affiche ses avertissements sur l'
énumération commune des faiblesses ,
SEI CERT Coding Standards . Tableaux de conformité des diagnostics PVS-Studio à différentes normes:
- Conformité CWE
- Conformité SEI CERT
Cette rubrique est décrite plus en détail dans l'article "
PVS-Studio en tant que solution SAST ".
Nous vous proposons également de vous familiariser avec les publications:
- Comment PVS-Studio peut-il aider à rechercher des vulnérabilités?
- Nous tirons dans le pied, traitant les données d'entrée .
- Nous fournissons l'analyseur PVS-Studio aux experts en sécurité .
PVS-Studio Free
À la veille de la célébration de la nouvelle année 2019, l'équipe PVS-Studio a décidé de faire un joli cadeau à tous les contributeurs de projets open source hébergés sur GitHub ou Bitbucket. Ils ont la possibilité d'utiliser gratuitement l'analyseur statique PVS-Studio pour développer des projets open source.
Détails: "
PVS-Studio gratuit pour ceux qui développent des projets open source ."
macOS
En 2018, PVS-Studio a appris à travailler sous le contrôle de macOS. Notre équipe a dédié la vérification du noyau XNU à cet événement: "
Version PVS-Studio pour macOS: 64 faiblesses dans le noyau Apple XNU ".
XNU est le cœur des systèmes d'exploitation informatiques développés par Apple et utilisés dans la famille OS X d'OS (macOS, iOS, tvOS, watchOS).

Si vous souhaitez partager cet article avec un public anglophone, veuillez utiliser le lien vers la traduction: Andrey Karpov, Svyatoslav Razmyslov.
PVS-Studio 7.00 .