Note aux enseignants: PVS-Studio pour initier les étudiants aux outils d'analyse de code

PVS-Studio et formation

Par la communication à l'appui et certains autres signes indirects, nous avons remarqué que parmi nos utilisateurs gratuits, il y avait beaucoup d'étudiants. Raison: L'analyseur PVS-Studio a commencé à être utilisé par certains enseignants dans les disciplines liées au développement de logiciels. C'est très agréable pour nous, et nous avons décidé d'écrire cette petite note afin d'attirer l'attention des autres professeurs. Nous sommes ravis que les étudiants soient initiés à la méthodologie de l'analyse de code statique en général et à l'outil PVS-Studio en particulier. Notre équipe tentera de contribuer au développement de cette tendance.

Le développement de logiciels modernes n'est pas possible sans une approche intégrée pour garantir la qualité et la fiabilité des logiciels. La raison en est que la taille de la base de code des applications modernes augmente rapidement. Je vais l'expliquer sur les chiffres. Prenons, par exemple, les systèmes d'exploitation:

  • MS DOS 1.0: 4 000 lignes de code. Une personne pouvait lire tout le code, le comprendre, trouver des erreurs.
  • Noyau Linux 1.0.0: 176 000 lignes de code. L'équipe a toujours la possibilité de faire un examen détaillé du code, même si cela prendra beaucoup de temps et d'efforts.
  • Noyau Linux 5.0: plus de 26 000 000 lignes de code. Il est impossible de réaliser le projet.

En utilisant le noyau Linux comme exemple, vous pouvez voir que la taille de la base de code a augmenté de 150 fois en 25 ans. Maintenant, il est impossible pour un programmeur de simplement s'asseoir et d'examiner le code de l'application entière, de le comprendre, de trouver des erreurs et d'améliorer les solutions architecturales. L'appareil des programmes modernes ne tient tout simplement pas dans la tête d'une seule personne, et il n'y a plus de spécialistes qui peuvent répondre à toute question concernant la conception du projet.

L'incapacité à réaliser le projet n'est que la moitié du problème. À mesure que la taille du projet augmente, la densité d'erreur augmente également. J'insiste: il ne s'agit pas seulement d'une augmentation du nombre d'erreurs, mais de leur densité ! Dans un programme écrit dans le cadre d'un article de terme, vous pouvez écrire 1000 lignes de code et ne pas faire une seule erreur. Et il est irréaliste d'ajouter 1 000 lignes de code à une grande application et de ne pas faire quelques erreurs. Pour plus de précision, nous avons de nouveau recours aux chiffres:

Figure 1. Densité d'erreur typique dans des projets de différentes tailles

Figure 1. Densité d'erreur typique dans des projets de différentes tailles. Données extraites du livre de Steve McConnell, Perfect Code.

Il est donc impossible d'écrire des programmes fiables en utilisant les mêmes approches qu'il y a 20-30 ans. Il est nécessaire d'utiliser un ensemble de méthodologies qui permettent de contrôler la croissance de la complexité d'un projet logiciel et d'assurer la qualité de code nécessaire:

  • Normes de codage
  • Revues de code
  • Tests unitaires
  • Test de régression
  • Test de charge
  • Test manuel
  • ....
  • Analyse dynamique
  • Analyse statique

Les méthodologies du haut de la liste sont assez familières aux programmeurs et ont longtemps été appliquées avec succès par presque toutes les équipes. Mais les deux dernières méthodologies, bien que non nouvelles, sont beaucoup moins courantes. Par conséquent, maintenant, lors de la préparation des étudiants, il convient de porter une attention particulière à l'étude des outils d'analyse statique et dynamique.

Je ne parlerai pas maintenant de l'analyse dynamique, bien qu'elle ne soit pas moins importante que statique.

Mais l'analyse statique est notre élément, et j'invite les enseignants à faire attention à notre produit logiciel 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 les systèmes 64 bits sous Windows, Linux et macOS et peut analyser le code conçu pour les plates-formes ARM 32 bits, 64 bits et intégrées.

L'analyseur PVS-Studio peut être considéré comme un exemple d'un outil moderne pour l'analyse de code statique. Tout d'abord, il est bon de montrer les capacités des outils d'analyse statique dans la détection des erreurs et des défauts de sécurité ( SAST ) à l'aide de son exemple. Deuxièmement, vous pouvez démontrer son intégration dans le cycle de développement logiciel afin que le contrôle du code soit continu. En utilisant son exemple, vous pouvez montrer la possibilité d'intégration avec des systèmes tels que Jenkins , TeamCity , Azure DevOps , SonarQube , Travis CI , etc.

Pour commencer à utiliser PVS-Studio dans le cadre de la formation, il n'est pas nécessaire de faire quoi que ce soit de spécial ou de coordonné.

Nous proposons plusieurs options pour la licence gratuite de PVS-Studio, y compris pour les projets open source. Spécifiquement à des fins éducatives, lorsque le travail des étudiants n'est pas ouvert, la meilleure option consiste à ajouter le commentaire suivant au code:

// This is a personal academic project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com

Pour commencer à utiliser l'analyseur statique PVS-Studio gratuitement, vous devez effectuer les deux étapes suivantes:

Première étape

Si vous utilisez PVS-Studio comme plug-in pour Visual Studio ou utilisez l'utilitaire autonome, entrez la clé de licence suivante:

Name: PVS-Studio Free
Key: FREE-FREE-FREE-FREE

Si vous utilisez PVS-Studio pour Linux, passez directement à la deuxième étape, vous n'aurez pas besoin d'un fichier avec une licence.

Deuxième étape

Vous devez saisir deux lignes avec un commentaire au début de chaque fichier. Apportez des corrections à tous les fichiers compilés de votre projet. Cela fait référence aux fichiers avec les extensions c, cc, cpp, cs, java et ainsi de suite. Les fichiers h d'en-tête n'ont pas besoin d'être modifiés.

Vous pouvez ajouter des commentaires à la fois manuellement et utiliser l'utilitaire auxiliaire pour cela. Vous pouvez télécharger l'utilitaire (avec le code source) ici: comment utiliser-pvs-studio-free .

Tout cela est décrit plus en détail dans l'article " Comment utiliser PVS-Studio gratuitement ". Demandez aux élèves de s'y familiariser. En particulier, il convient de garder à l'esprit que nous fournissons une assistance aux utilisateurs gratuits via le site Web StackOverflow. Mais vous ne devez pas confondre le support et les notifications de bogues. À peu près de tels moments et est décrit dans l'article.

Merci de votre attention. En cas de questions, nous sommes prêts à fournir une assistance et des conseils. N'hésitez pas à nous contacter en support.

Liens supplémentaires:

  1. Ivan Ponomarev. Rapport à la conférence Heisenbug 2019 à Moscou: analyse continue du code statique .
  2. Sergey Khrenov, Philip Handelyants. Master class à la conférence Saint HighLoad ++ 2019: analyseur de code PVS-Studio .
  3. Andrey Karpov. Options de licence gratuites de PVS-Studio .
  4. PVS-Studio. La documentation



Si vous souhaitez partager cet article avec un public anglophone, veuillez utiliser le lien vers la traduction: Andrey Karpov. Pour les professeurs: utilisez PVS-Studio pour familiariser les étudiants avec les outils d'analyse de code .

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


All Articles