Je voulais juste savoir quelle est la différence entre l'analyse de code statique et la révision de code. Comment se fait chacun de ces deux? Plus précisément, quels sont les outils disponibles aujourd'hui pour la révision de code / l'analyse statique de PHP? J'aimerais également connaître les bons outils de révision de code pour n'importe quelle langue.
code-quality
terminology
code-reviews
quality
Thomas Owens
la source
la source
Réponses:
L'examen du code est quelque chose que les gens font, l'analyse statique est quelque chose que les machines font. Il existe (parfois de bons) outils d'analyse statique. La révision du code, c'est quand un collègue / mentor / professeur / ami passe en revue votre code et vous donne une critique constructive.
L'analyse statique est, d'autre part, un processus automatisé dans lequel une machine, informée par ce qu'elle sait du langage qu'elle analyse (généralement à partir du système de type), analyse un programme et essaie de détecter des choses qui pourraient être incorrectes, style inefficace, médiocre ou autrement sous-optimal.
la source
L'analyse statique est le processus d'analyse d'un logiciel sans l'exécuter. Ceci est très bon et recommandé, mais vous devez garder à l'esprit que
Ces deux approches souffrent du manque de contexte: elles ne savent pas ce que le sw est censé accomplir.
La révision du code est effectuée par un autre codeur, qui le sait et peut vérifier
Il est beaucoup plus cher et a un degré de répétabilité variable, mais il est d'une grande aide.
Comme toujours, il n'y a pas une seule solution miracle qui corrigera tous les bugs et évitera tous les problèmes. L'application - autant que possible compte tenu de l'endroit, du code, de l'heure, des trois formes de contrôle (statique, dynamique, plus d'yeux (et de cerveaux) regardant réellement le code) est recommandée.
ps: je dois noter qu'il est généralement préférable d'appliquer les outils à partir de zéro. La conversion d'un système hérité est une expérience beaucoup moins agréable, en raison de faux positifs. Si vous partez de zéro et visez toujours à garder l'outil d'analyse propre, vous éviterez probablement beaucoup de problèmes.
pps: comme pour les outils, cela dépend de la langue. Dans le monde C et C ++, vous pouvez commencer par regarder Visual Studio lui-même, qui contient un outil d'analyse statique intégré. Une liste relativement complète se trouve sur Wikipédia.
ppps: l'analyse statique est plus adaptée aux langages statiques, comme C ou C ++. Pour Python, il peut être vraiment difficile de dire si un nom qui fait référence à une liste à un moment donné fera référence à une liste pour le reste du programme, en raison de ses propriétés dynamiques. Cela ne signifie pas que rien ne peut être fait, comme le montre un effort JIT comme PyPy .
la source
La révision du code, c'est quand une personne âgée ou une autorité dédiée vérifie votre code, votre façon de coder, les normes suivies dans le code et en particulier le niveau logique du code
En ce qui concerne l'analyse statique, c'est l'analyse de logiciels informatiques qui est effectuée sans exécuter réellement des programmes construits à partir de ce logiciel (l'analyse effectuée sur l'exécution de programmes est connue sous le nom d'analyse dynamique)
La liste des outils selon la technologie est donnée dans le lien ci-dessous
Liste d'outils pour l'analyse statique
Par conséquent, la revue de code et l'analyse statique sont des termes complètement différents.
la source
L'examen du code est une évaluation plus qualitative, l'analyse statique du code est une évaluation plus quantitative.
vs, fe
Alors que de vraies erreurs peuvent (évidemment) exister et être détectées par SCA
la source
L'analyse statique est lorsqu'un artefact est analysé sans être exécuté. Bien qu'il puisse être appliqué à n'importe quel artefact, il est souvent appliqué au code source ou au code objet et fait référence à l'utilisation d'outils spécifiques pour analyser et obtenir des informations sur ces produits de travail. Ces outils produisent des rapports qui sont interprétés par un ingénieur pour être utilisés dans la détermination de la qualité du système en construction et comme guide pour planifier le développement et la maintenance. Wikipedia a une liste d'outils d'analyse statique , organisés par langue et avec une brève description de leurs capacités.
Les avis sont une évaluation humaine d'un produit de travail, qui pourrait être du code. Des examens peuvent également être menés sur les dessins ou autres documents. L'idée est que des personnes familières avec le produit de travail autres que le développeur le regardent afin de trouver des erreurs, allant des problèmes de sécurité aux violations de la norme de codage.
Techniquement, une révision de code peut être considérée comme une forme d'analyse statique, car le code n'est pas réellement exécuté pendant la révision. Cependant, dans la terminologie courante, l '"analyse statique" se réfère généralement à l'analyse par ordinateur des fichiers source ou objet tandis que la "revue" indique que ce sont les humains qui font l'analyse.
la source
La révision du code est une technique utile pour détecter très tôt les problèmes de code source. Dans le cadre de cet exercice, de nombreux problèmes tels que les performances, l'évolutivité et les normes de codage ont été identifiés et corrigés. Cela améliorera la qualité du code.
L'analyse statique est utilisée pour analyser des métriques de qualité de code telles que la complexité cyclométrique, l'indice de maintenabilité, la profondeur d'héritage et les couplages de classes. Divers outils disponibles sur le marché pour analyser les qualités du code. Le développeur C # utilise Microsoft Visual Studio pour générer des rapports métriques.
la source
l'analyse de code statique est effectuée par un outil automatisé, la révision du code est effectuée avec des personnes avant la validation du code.
Outils de révision de code:
1. au-delà de comparer
2.le diff du logiciel de contrôle de version
Ces outils sont toujours utilisés pour générer la différence entre l'ancienne version et la nouvelle version.
la source