PVS-Studio 7.00

PVS-Studio C # \ Java \ C ++ Aujourd'hui est un jour important - après 28 versions de la sixième version, nous présentons notre PVS-Studio 7.00, dans lequel l'innovation clé est le support du langage Java. Cependant, en 2018, nous avons acquis de nombreux autres changements importants liés à C ++, C #, à l'infrastructure et à la prise en charge des normes de codage. Par conséquent, nous attirons votre attention sur une note qui résume les principaux changements survenus dans PVS-Studio pour la dernière fois.

PVS-Studio est un outil conçu pour détecter les erreurs et les vulnérabilités potentielles dans le code source des programmes, écrit en C, C ++, C # et Java. Il fonctionne dans l'environnement Windows, Linux et macOS.

Une vaste collection d'erreurs trouvées dans le code lors des vérifications de divers projets open source démontre clairement les capacités de l'analyseur.

Nous allons commencer par un changement en raison duquel nous avons décidé de changer le numéro de version de 6.x à 7.x. C'est le support de l'analyseur du langage Java, qui a nécessité un long temps de préparation .

Java


La chose la plus importante dans l'analyseur Java est qu'elle est apparue :). Nous aimerions inviter les développeurs Java à télécharger l'outil et à vérifier les projets sur lesquels vous travaillez actuellement.

Nous avons mis à la disposition des utilisateurs les moyens les plus populaires d'intégration de l'analyseur dans le système de build:

  • Plugin pour Maven.
  • Plugin pour Gradle.
  • Plugin pour IntelliJ IDEA.

En cas d'utilisation de systèmes de construction auto-écrits, nous avons la possibilité 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 manières d'exécuter l'analyseur sur la page de documentation " Comment exécuter PVS-Studio Java ".

Nous ne pouvions pas éviter la plate-forme SonarQube du contrôle de la qualité du code, qui est si populaire parmi les développeurs Java, nous avons donc ajouté la prise en charge du langage Java dans notre plugin pour SonarQube .

C, C ++


En 2018, notre équipe travaillait activement au développement de l'analyseur C ++. De nombreux nouveaux diagnostics sont apparus avec les algorithmes , qui permettent de collecter et de traiter les données extraites de l'arbre de syntaxe.

CWE, CERT

Les avertissements des analyseurs C ++ (et C #) ont été classés selon l'énumération commune des faiblesses ( CWE ). CWE est un système de classification des vulnérabilités potentielles et confirmées. Il est soutenu par la communauté en vue d'identifier les problèmes logiciels et de créer des outils automatisés pouvant ê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 en C, C ++, Java et Perl, développé par le CERT (CERT Coordination Center, CERT / CC) pour améliorer la fiabilité et la sécurité des logiciels.

La classification des diagnostics C et C ++ selon ces avertissements permet d'utiliser PVS-Studio comme solution SAST .

Misra

En 2018, un analyseur de code statique PVS-Studio est devenu capable de classer ses avertissements selon les normes MISRA C et MISRA C ++. Grâce à la prise en charge de ces normes, il est devenu possible d'utiliser efficacement l'analyseur pour augmenter le niveau de sécurité, de portabilité et de fiabilité des programmes pour les systèmes embarqués.

En savoir plus: " PVS-Studio: prise en charge des normes de codage MISRA C et MISRA C ++ ."

La prise en charge de MISRA est devenue pertinente dans le cadre du développement de la prise en charge de divers systèmes embarqués, qui seront abordés dans la section suivante de cet article.

Développement embarqué

En 2018, les compilateurs intégrés suivants ont été pris en charge dans 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 le sujet de la prise en charge des systèmes embarqués:

  1. Analyseur de code statique PVS-Studio 6.22 prend désormais en charge les compilateurs ARM (Keil, IAR) .
  2. PVS-Studio prend désormais en charge la chaîne d'outils intégrée GNU Arm .

Extension d'annotations personnalisées

Parfois, de telles implémentations personnalisées de diverses fonctions système, comme, par exemple, memcpy , malloc , etc., sont utilisées dans les projets. L'analyseur peut très bien détecter les erreurs dans le code qui utilise des fonctions standard, mais dans un code personnalisé, il a été impossible d'appliquer de tels algorithmes jusqu'à récemment. Maintenant, en utilisant l'annotation V_FUNC_ALIAS, vous pouvez entrer les noms de vos fonctions en conformité avec celles du système.

Format de commentaire:

//V_FUNC_ALIAS, implementation:sysf, function:f, namespace:ns, class:c 

  • Clé d' implémentation - spécifie le nom de la fonction standard pour déterminer l'alias.
  • Touche de fonction - spécifie le nom de l'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 clé de classe est le nom de la classe. Pourrait manquer.
  • La clé d' espace de noms est le nom de l'espace de noms. Pourrait manquer.

Regardons un exemple:

 //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy 

L'analyseur va maintenant gérer les appels de la fonction MyMemCpy de la même manière que les appels de memcpy . Par exemple, pour un tel code, un avertissement V512 sera émis:

 int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int)); // Warning! 

C #


Cette année, il n'y a eu aucun changement significatif de l'analyseur C #. Il y a eu quelques améliorations des diagnostics et des corrections d'erreurs. Les avertissements de l'analyseur C #, ainsi que les avertissements de l'analyseur C ++ ont été classés en fonction de l'énumération commune des faiblesses ( CWE ). Le mappage des diagnostics C # avec les identifiants CWE est donné ici (voir diagnostic avec les numéros 3xxx).

Nous prévoyons de revenir à un développement plus actif de l'analyseur C # en 2019. Nous prévoyons également de développer de nouveaux diagnostics et d'améliorer le mécanisme d'analyse des flux de données.

Convertisseurs de rapports


PlogConverter.exe et les utilitaires plog-converter sont inclus dans les distributions PVS-Studio pour Windows et Linux / macOS, respectivement. De plus, le code source de ces utilitaires est 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 avons ajouté Java au format FullHtml ( pour un navigateur Web ).

De plus, la colonne MISRA a été ajoutée pour le rapport dans ce format.

Convertisseurs de rapports


En plus de CWE ID, la colonne MISRA est facultative et est activée par les réviseurs de la sécurité du code lors de l'examen des résultats de l'analyse.

Plugins SonarQube


1. Mise à jour complète

Nous avons réécrit nos plugins en utilisant la nouvelle API. Cela nous 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 Java

La nouvelle version inclut la prise en charge des diagnostics en langage Java. Vous pouvez maintenant ajouter PVS-Studio à d'autres outils de contrôle qualité de votre projet Java.

3. Norme MISRA

Nous avons récemment annoncé la prise en charge des normes MISRA C et MISRA C ++. Les nouveaux plugins incluent également leur support. Par exemple, le paramètre suivant 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:

PVS-Studio, MISRA


Quel que soit ce paramètre, la recherche par balises misra et pvs-studio # misra sera disponible dans les résultats d'analyse. Des informations sur le nombre des avertissements MISRA trouvés ont également été ajoutées dans les mesures, qui seront discutées ci-dessous.

4. Nouvelles mesures

Dans le menu Projets -> Votre projet -> Mesures, différentes métriques de code sont disponibles, parmi lesquelles il existe maintenant diverses informations de PVS-Studio:

Sonarquube


À l'aide de chacune des métriques, vous pouvez créer des graphiques et surveiller la dynamique d'occurrence de divers groupes d'avertissements.

4. Transitions multilignes

Certains diagnostics de l'analyseur émettent des avertissements pour plusieurs lignes de code. Parfois, ils sont très éloignés. Dans la nouvelle version, nous avons ajouté des transitions multilignes:

Sonarquube


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. Documentation

La documentation a subi de gros changements. PVS-Studio est un produit multiplateforme et multilingue, par conséquent, tous les traitements ont été axés sur la rédaction d'instructions plus courantes et faciles à comprendre pour travailler sur différents systèmes.

SAST


Jusqu'à récemment, dans nos articles, nous avons positionné PVS-Studio comme un outil pour détecter les erreurs de code. Bien que nous n'ayons presque jamais considéré PVS-Studio dans un contexte de sécurité. Cette année, nous avons remédié à cette situation et considéré l'outil en termes de test des applications de sécurité et des pratiques DevSecOps.

PVS-Studio est un outil de test de sécurité d'application statique (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 peut générer des avertissements dans les formats suivants: énumération des faiblesses communes , normes de codage SEI CERT . Mappage des tableaux de diagnostics PVS-Studio à différents standards:

  1. Cartographie CWE
  2. Cartographie SEI cert

Ce sujet a été décrit plus en détail dans l'article " PVS-Studio en tant que solution SAST ".

Nous vous suggérons également de consulter ces publications:

  1. Comment PVS-Studio peut-il aider à détecter les vulnérabilités?
  2. Tirez-vous dans le pied lors de la manipulation des données d'entrée .
  3. Remise des licences PVS-Studio Analyzer aux experts en sécurité .

PVS-Studio Free


À la veille du nouvel an 2019, une équipe PVS-Studio a décidé de faire un joli cadeau pour tous les contributeurs de projets open source hébergés sur GitHub ou Bitbucket. Ils bénéficient de l'utilisation gratuite de l'analyseur statique PVS-Studio pour le développement de projets open source.

Détails: " PVS-Studio gratuit pour ceux qui développent des projets open source ".

macOS


En 2018, PVS-Studio a commencé à fonctionner sous macOS. Notre équipe a décidé d'effectuer une vérification du noyau XNU pour la faire coïncider avec cet événement: " PVS-Studio est maintenant disponible sur macOS: 64 faiblesses dans le noyau XNU d'Apple ".

XNU est un noyau de systèmes d'exploitation informatiques développé par Apple et utilisé dans les systèmes d'exploitation OS X (macOS, iOS, tvOS, watchOS).

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


All Articles