{{tag>programmation BROUILLON}}
----
====== Les analyseurs de code statique ======
En informatique, la notion d'analyse statique de programmes couvre une variété de méthodes utilisées pour obtenir des informations sur le comportement d'un programme lors de son exécution sans réellement l'exécuter. C'est cette dernière restriction qui distingue l'analyse statique des analyses dynamiques (comme le débogage ou le profiling) qui sont concernés par le suivi de l'exécution du programme.
L'analyse statique est utilisée pour repérer des erreurs de programmation ou de conception, mais aussi pour déterminer la facilité ou la difficulté à maintenir le code.
Elle permet l'optimisation du code au niveau de l'exécution, de la mémoire, de sa sécurité.
=====Solution pour la qualité de développement logiciel =====
* [[Sonar]] [[SonarQube]] (( https://www.sonarqube.org/ ))
* [[Squale]] ((http://linuxfr.org/2010/05/26/26896.html))
* [[Squash]] ([[http://www.systematic-paris-region.org/fr/mots-cles/squash|site]]): vise à structurer et industrialiser les activités de tests fonctionnels en proposant une méthodologie outillée libre adaptée à la mise en œuvre d’un centre de service de tests.
===== Par langage =====
==== C / C++ ====
Concurrents majeurs propriétaires : [[https://en.wikipedia.org/wiki/PC-Lint|pc-lint]](gimpel),[[http://www.klocwork.com/|Klocwork]], [[http://www.coverity.com/|Coverity]], [[http://www.mathworks.com/products/polyspace/index.html|PolySpace]]
* [[http://sparse.wiki.kernel.org/index.php/Main_Page|Sparse (utilisé pour le kernel linux)]] ( tourné pour les kernels )
* **[[https://valgrind.org/|Valgrind]]** ( [[http://www.cprogramming.com/debugging/valgrind.html|tutoriel]] )
* C++ Check http://sf.net/projects/cppcheck/
* Oink http://www.cubewano.org/oink/
* C and C++ Code Counter https://sourceforge.net/projects/cccc/
* Splint (dans les dépôts)
* [[https://wiki.mozilla.org/Static_Analysis|Mozilla's Pork]]
* [[https://wiki.mozilla.org/Static_Analysis|Mozilla's Dehydra]]
* Les options -Weff++ pour GNU g++
* [[http://smatch.sourceforge.net/|SMATCH]]
* [[http://www.spinroot.com/uno/|Uno]]
* [[http://www.domagoj-babic.com/index.php/ResearchProjects/Calysto|Calysto]]
* [[http://saturn.stanford.edu/pages/relatedindex.html|Saturn]]
* [[http://www.dwheeler.com/flawfinder/|Flawfinder]]
* [[http://code.google.com/p/cppanalyse/|cppanalyse]]
* [[http://google-styleguide.googlecode.com/svn/trunk/cpplint/|Cpplint (google)]]
* [[https://sourceforge.net/projects/clint/|Clint]]
* [[http://mygcc.free.fr/|mygcc]]
* [[ftp://ftp.sds.lcs.mit.edu/pub/Larch/lclint/|LC-Lint]]
Outil de métrique (pas d'analyse) :
* http://www.chris-lott.org/resources/cmetrics/
==== .net ====
* [[http://www.mono-project.com/Gendarme|Gendarme (mono)]]
==== PHP ====
* [[http://www.smashingmagazine.com/2009/01/20/50-extremely-useful-php-tools/|50 Outils PHP Extrêmement utile]]
====Java ====
* [[https://sourceforge.net/projects/findbugs/|findbugs]]
* [[http://checkstyle.sf.net/|Checkstyle]]
* [[https://sourceforge.net/projects/pmd/|pmd]]
* jlint
====Application web====
* [[http://seleniumhq.org/|Selenium]]
* XSSer ([[http://xsser.sourceforge.net/|site]])
===== Liens =====
* (en) [[http://en.wikipedia.org/wiki/Category:Static_code_analysis|Les analyseurs de code static (wikipedia)]] et [[http://en.wikipedia.org/wiki/Dynamic_code_analysis|analyseurs de code dynamique]]
* (fr) [[https://fr.wikipedia.org/wiki/Analyse_statique_de_programmes|Analyse statique de programmes]]
* (en) [[https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis|List of tools for static code analysis]]
* (en) [[http://www.spinroot.com/static/|Static Source Code Analysis Tools for C]]
* (en) [[http://open-tube.com/10-free-tools-for-static-code-analysis/|10+ free tools for static code analysis]] (free = pas forcément open source)
----
//Contributeurs : [[:utilisateurs:psychederic|Psychederic]].//