Affichage des articles dont le libellé est analyse statique. Afficher tous les articles
Affichage des articles dont le libellé est analyse statique. Afficher tous les articles

lundi 21 septembre 2020

Pour les développeurs, j'aborde l'outil NDepend d'analyse statique de vos codes source mais pas seulement.

Pour le développeur expérimenté que je suis, je me dois de vous présenter cet outil NDepend qui parait être une solution intégrée pour Analyser - Analyse des métriques du code - mais également pour déboguer votre code.

Lorsque vous avez à manager des projets importants en termes de lignes de codes en termes d'architecture, vous vous devez d'utiliser un outil d'analyse statique de code comme NDepend qui va vous permettre d'avoir une bien meilleur vision, un vision plus large de plus synthétique de votre projet.

NDepend
NDepend - Managez plus facilement vos projets d'envergure

Au moment de l'installation de l'outil, vous ouvrez votre Visual Studio, vous créez un projet NDepend juste à côté, il se met alors à analyser votre code et à créer des rapports d'analyse de votre code source. Les règles que vous pouvez appliquer sont classées de différents types :

  • Code Quality
  • Object Oriented Design
  • Architecture
  • Dead Code : code mort, code non utilisé
  • Naming convention : convention de nommage

NDepdend vous fournit des outils pour naviguer à travers le code au sein de projet dont l'architecture est complexe. NDepend vous permet donc de réorganiser des projets complexes et de maintenir la qualité de vos projet actuels.

Il s'agit donc d'un outil d'analyse statique de code dont on connait un autre représentant SonarQube, voici donc un article pour aller plus loin :

NDepend vs SonarQube : Pourquoi ne pas les intégrer ensemble ?
Forcément les choses se compliquent encore un peu, puisque l'on est dans une démarche d'intégration continue grâce à la Stack GitHub, AppVeyor, NDepend, NGrok, SonarQube.

Voici comment intégrer un outil comme NDepend dans une démarche de "conitinus delivry" (de livraison continue) :

NDepend Sonarqube
Continus Delivry 

Cet article est mal traduit en français mais il est très complet dans une démarche DevOps de scripting de la totalité des étapes. Dans cet article il y a une multitude d'outils utilisés, Resharper JetBrains, AppVeyor, Bamboo, GitLab

Donc le moyen de procéder avec ces stacks devops de développement, c'est de faire une matrice 3D, fonctionnalités recherchées, outils correspondants, compétences dans l'équipe. Ainsi cette matrice vous permettra d'utiliser une pile adéquate.

vendredi 8 mars 2019

ZDNet - Outil de reverse engineering sous licence libre Ghidra

Vous connaissez Ghidra ? La National Security Agency a publié Ghidra, un outil de reverse engineering sous licence libre utilisé depuis plus de 10 ans en interne. ZDNet - Ghidra

L'existence de Ghidra a été initialement rendue publique via Wikileaks en mars 2017 mais il a fallut attendre la déclassification du logiciel deux ans plus tard. Les formats binaires pris en charge sont très nombreux on retrouve dans la liste un nombre impressionnant de micro-processeurs.

https://ghidra-sre.org/
Outil de reverse engineering de la NSA

Il existe une alternative nommée IDA Pro mais elle vaut des milliers de dollars par an. IDA Pro est un désassembleur et débogueur pour Windows Linux ou Mac OS. C'est le standard en matière d'analyse de code hostile.

NSA sous GitHub - Ghidra
NSA sous GitHub - Ghidra 

Cet outil est maintenant un logiciel Open Source sous Github :


Ghidra est en Java, il faut avoir installé le Java Development Kit 11. Mais a priori l'installation de cet outil n'est pas plus compliqué que de dézipper l'archive.

Au cas cela disparaisse moi je prends des notes et je l'ai téléhargé ... LoL ...

jeudi 12 juillet 2018

Comment réaliser un bon audit de codes sources ?

Le premier chapitre de la qualité logicielle nous dit que pour faire un bon logiciel il faut ... et puis il faut passer à la pratique. Alors je souhaite me munir des bons outils pour réaliser un bon audit de code sources.

C'est mon sujet du moment, il devrait m'intéresser pendant quelques temps.

Analyse statiques de code pour C#

Il existent de nombreux outils d'analyse statique de code source peu sont en C# et sinon chers.

SonarQube

C'est cher j'ai trouvé une page qui me vend une licence à 120 € pour 100 000 lignes de codes ba ba ba ... 
sonarqube developer edition
SonarQube Developer Edition
Une fois le formulaire rempli ...

SonarQube Developer Edition
SonarQube Developer Edition - purchase order 
Jusque là ce n'est pas trop cher mais on n'a absolument rien ...
En cherchant bien mais alors vraiment bien, ici on nous prédit une version Free & Open Source

SonarQube - Solution Free & Open Source
SonarQube - Solution Free & Open Source
Mais je n'y crois pas ... et sinon pour télécharger la version 7.1 c'est Ici.
Finalement j'ai cliqué là :

Community Edition

Et j'ai atterri là :


SonarQube
Pour finalement télécharger "the lastest release edition 7.1" ... 146 576 Ko d'installs pour toutes les plateformes de tous les OS et tous les langages ... bref ...

La suite je vous dis si cela fonctionne.

Autres outils d'analyse statique

Voilà un outil d'analyse statique de codes sources qui semble cool et pas cher ...
PMD


https://pmd.github.io/

Online Documentation
https://pmd.github.io/pmd-6.4.0/pmd_userdocs_getting_started.html

Mince ! Pas de C# et pourtant il m'y ont fait croire avec leur CPD déteur de code copier collé ...

Par quoi continuer mon audit de codes sources ?

Finalement je me retrouve un peu coincé, je continuerai plus tard ...

jeudi 29 septembre 2016

Outils d'analyse statique de code

Vous vous demandez à quoi peut bien servir l'analyse statique de codes sources, l'analyse statique de programmes ? Vous avez utilisé les outils classiques de Visual Studio comme le profiling alors l'analyse statique de code, c'est quoi ?


Vous avez d'un côté le code de l'autre l'outil d'analyse statique. Celui-ci, au regard d'une liste de recettes définies au préalable, va analyser le code afin de vérifier que vous avez respecté l'ensemble de ces "bonnes recettes".

Voici des exemples de recettes à respecter dans les langages C/C++/Objective-C :
  • Improper Restriction of Operations within the bounds of a Memory Buffer
  • Buffer Copy without Checking Size of Input (‘Classic Buffer Overflow’)
  • Out-of-bounds Read
  • Improper Validation of Array Index
  • Incorrect Calculation of Buffer Size
  • Uncontrolled Format String
On n'accorde jamais assez d'importance à l'écriture du code et aux recettes qu'il faut s'efforcer d'appliquer, de respecter. Il faudrait mettre en place des revues de code et un coding guidelines dès le début d'un projet. Il faut appliquer les bonnes recettes dès le début mais ce n'est pas toujours possible.

Donc si vous n'avez pas toute la confiance souhaitée dans un projet logiciel, il peut s'avérer utile de passer le code à la moulinette d'un outil d'analyse statique pour faire un état des lieux le plus précis possible. On pourrait dire que c'est du "reverse engineering" mais en reverse il est très tard pour se rendre compte de la mauvaise qualité d'un logiciel.

Outils d'analyse statique

La liste des outils proposés sur le marché est bien longue ...
Liste des outils d'analyse statique
Liste des outils d'analyse statique
En regardant de plus prêt cette longue liste qui nous est fournit par Wikipedia Analyse statique de programmes une première remarque la plus part de ces outils sont payant et pas qu'un peu : Le plugin C/C++ de SonarQube Pro est à 7000 $.

Comparaison des outils d'analyse statique

Que peut-on dire par exemple de Coverity et de SonarQube. Autres éléments de comparaison par exemple je souhaite faire de la retro-ingénierie, lequel de ces outils seraient le plus adapté.

Coverity

Prenons le premier, Coverity, le site est abscons c'est le moins qu'on puisse dire. Et la vidéo sur Improving Scientific Research: CERN and Coverity(R) Static Analysis vous projette dans l'espace à travers l'accélérateur de particules du CERN, rien de moins. Un beau voyage dans l'espace mais vous vous vous retrouvez avec votre code.

On aura accès à la liste des recettes appliquées par l'outil d'analyse, par exemple en C/C++ et Objective-C.
Pour le reste il ne vous reste plus qu'à appeler :

To purchase Synopsys Software Integrity products or services, please call (800) 873-8193

Ce n'est pas très engageant !

Et sinon enregistrez vous pour un essai ...

SonarQube

On dirait plutôt un "all in one" plutôt qu'un outil purement d'analyse statique de code source.
SonarQube - All in One
SonarQube - All in One
Les modules sont payant en tous cas pour ce qui concerne le C/C++ :

SonarQube Plugin C/C++
SonarQube Plugin C/C++ à 7000 $
Et sinon SonarQube, ils passent leur temps à analyser les logiciels, voici le résultat :
SonarQube Analyse Static
SonarQube Analyse Static - Apache HTTP Server en langage C - Bash - Git - PHP
Ils ne se la pête pas un peu !? Je ne suis pas certain de vouloir que mon logiciel soit étalé de cette façon avec ses bugs ses failles de sécurité.

Git est en mode "A" pour la sécurité, il va être content Linus Torvalds. Cliquons sur le projet Git pour voir les détails fournit par SonarQube :
SoanrQube - Analyse Statique de code - Projet Git
No Vulnerabilities
At least one blocker bug
Code Smells : ça sent bon le code ? mdr.

Cliquons sur Bugs pour voir :
SonarQube
SonarQube Analyse des Bugs de Git
Quel joli graphique, en fait l'état du logiciel Git est affiché là ouvert au publique. C'est incroyable la transparence de nos jours.

1 127 Bugs
205 New Bugs

Cppcheck

Online demo c'est amusant plutôt ludique. 

void f()
{
    char *p;
    *p = 0;
}

Check :

Cppcheck 1.75

[test.cpp:3]: (style) Variable 'p' is not assigned a value.
[test.cpp:4]: (error) Uninitialized variable: p

Done!
Detect various kinds of bugs in your code:

Out of bounds checking
Memory leaks checking
Detect possible null pointer dereferences
Check for uninitialized variables
Check for invalid usage of STL
Checking exception safety
Warn if obsolete or unsafe functions are used
Warn about unused or redundant code
Detect various suspicious code indicating bugs

List of all checks

Plugin for Visual Studio

Conclusion

Je ne vous ai certainement pas donné assez l'envie d'utiliser ces outils ... Mais je vais certainement devoir en choisir un pour travailler avec, le mois prochain ... alors je vous tiendrais au courant.

Nous avons compris maintenant que la qualité logicielle se conçoit dès le début d'un projet en mettant en place les bons outils et les bonnes pratiques de développement.

Alors aimez-nous, sinon ... champignon !