Bonjour a tous,
Est-ce que quelqu'un peut m'expliquer un peu les différences entre "analyser en statique le code C" et "analyser en dynamique le code C"
merci
Version imprimable
Bonjour a tous,
Est-ce que quelqu'un peut m'expliquer un peu les différences entre "analyser en statique le code C" et "analyser en dynamique le code C"
merci
En supposant qu'il s'agit de 'code source C' :
- En statique, c'est uniquement tester la syntaxe et la sémantique.
- En dynamique, c'est simuler l'exécution pour détecter des zones de code non utilisées, des variables utilisées sans intialisation, des variables écrites 2 fois de suite etc. Bref, des bizarreries qui révèlent le plus souvent une erreur de codage...
Je déterre ce sujet pour éviter de créer un sujet doublon, il me semble que ce sujet n'est pas encore résolu!
Pour l'analyse statique, j'utilise Klocwork mais pour l'analyse dynamique, que me conseillerez-vous?
Il y a beaucoup de choses qui peuvent analysées en statique.Citation:
Qu'est ce que tu appelles "tester la sémantique" en statique ? Parceque ça inclu pour moi justement les zones de code non utilisées, les variables non initialisées, variables réécrites, etc. :-)
Il serait trop long de les énumérer. Un exemple est la déclaration d'un tableau de n éléments et l'écriture à un indice >= N.
Ce n'est qu'un exemple. Je passe sur une variable forcée à une valeur, non modifiée et testée à une valeur différente quelques lignes en dessous... -> code mort.
Klocwork, QA C sont des exemples d'analyseurs statiques. Je n'en connais pas de gratuit.
Pour l'analyse dynamique Polyspace est bien... il faut quand même avoir son carnet de chèques.
Wikipedia détaille cela:
http://fr.wikipedia.org/wiki/Analyse..._de_programmes
logiscope peut être également ajouté à la liste des analyseurs statiques.
RATSCitation:
Je n'en connais pas de gratuit.
Flawfinder
Yasca
Splint
Cppcheck
mais moins ergonomique (ligne de commande)
Combien en avez-vous utilisez ?
je les ai testé rapidement.
RATS et Flawfinder fonctionne pratiquement pareil. ils font plus de la "prévention". ils font un audit sur la syntaxe (fonctions utilisées non secure)
Splint retourne beaucoup.. beaucoup de chose. Pour qu'il soit efficace il faut annoter son programme. donc fastidieux au début, mais peut être efficace si bien utilisé. (j'ai testé mais sans annotation)
Yasca peut intégrer plusieurs outils. (rats, cppcheck, PMD...): pour C/C++, php et java. fonctionne sur windows et Linux.
Cppcheck est "assez" efficace. détecte pas mal de chose mais en oublie d'autre.
les rapports sont en html et/ou xml.
Mais la question que je me pose: est ce que ces outils sont utiles de nos jours ? ce que je sous-entends c'est que GCC permet de relever pas mal de choses...
OuiCitation:
est ce que ces outils sont utiles de nos jours ?
Entre les warnings de gcc et ce que peuvent faire les outils professionnels que j'ai cité, il y a une vrai plue-value.
alors j'aurais d'autres questions:
Combien valent les licences ?
-Klocwork ?
-codesonar ?
-purify ?
-coverity ?
J'ai vu que la licence de fortify 360 coutait 60.000$/an .. les autres cités ci-dessus dans les même prix ?
Sont ils utilisés pour démarrer un audit de code ? Ou alors pendant le développement ?