Question

Quels sont les avantages de l'analyse de code statique sur votre code source? Je jouais avec FxCop et je me demandais s'il y avait d'autres avantages que de s'assurer que vous respectiez les normes de code.

Était-ce utile?

La solution

Il y a toutes sortes d'avantages:

  1. Si votre code contient des anti-modèles, vous pouvez en être averti.
  2. Il existe certains paramètres (tels que la complexité cyclomatique de McCabe) qui disent des choses utiles sur le code source.
  3. Vous pouvez également obtenir des informations intéressantes, telles que des graphes d'appel et des diagrammes de classes. de l'analyse statique. Ce sont merveilleux si vous attaquez un nouvelle base de code.

Consultez SourceMonitor

.

Autres conseils

De nombreuses classes de fuites de mémoire et d'erreurs de logique courantes peuvent également être interceptées de manière statique. Vous pouvez également examiner la complexité cyclomatique et autres, qui peuvent faire partie des "normes de codage". vous avez mentionné, mais il peut s’agir d’une mesure distincte que vous utilisez pour évaluer la "propreté" algorithmique. de votre code.

Dans tous les cas, seule une combinaison judicieuse de profilage (analyse dynamique ou en temps d’exécution) et d’analyse statique / anti-peluches garantira une base de code cohérente et fiable. Oh, ça et un peu de chance ;-)

C'est un compromis. Pour un développeur individuel qui souhaite améliorer sa compréhension du cadre et des lignes directrices, je l'encouragerais certainement. FxCop génère beaucoup de bruit / faux positifs, mais j'ai également constaté les avantages suivants:

  • il détecte les bogues (par exemple, un avertissement concernant un argument non utilisé peut indiquer que vous avez utilisé le mauvais argument dans le corps de la méthode).

  • comprendre les consignes que FxCop suit vous aide à devenir un meilleur développeur.

Cependant, avec une équipe à compétences multiples, FxCop risque de générer trop de faux positifs pour être utile. Les développeurs débutants auront du mal à comprendre si certaines des violations les plus ésotériques de FxCop les concernent ou s’agit simplement de bruit.

Résultat inférieur:

  • Si vous développez des bibliothèques de classes réutilisables, telles qu'un framework interne, assurez-vous d'avoir de bons développeurs et utilisez FxCop.

  • Cela ne sera probablement pas réalisable pour le développement quotidien d'applications avec des équipes polyvalentes.

En fait, fxcop ne vous aide pas particulièrement à suivre une norme de codage. Cela vous aide à concevoir un framework / API bien pensé. Il est vrai que certaines parties de la norme de codage (telles que la casse des membres du public) seront capturées par FxCop, mais les normes de codage ne sont pas au centre des préoccupations.

Les normes de codage

peuvent être vérifiées avec stylecop , qui vérifie le code source au lieu du code MSIL. comme fxcop le fait.

Cela peut attraper de vrais bugs, tels que l’oubli de Dispose IDisposables.

Dépend des règles, mais de nombreux défauts subtils peuvent être évités, le code peut être nettoyé, des problèmes de performances potentiels peuvent être détectés, etc.

En un sens ... si c'est bon marché ou gratuit (en temps et en coûts financiers) et que rien ne casse, pourquoi ne pas l'utiliser?

FxCop

Il existe une liste de tous les avertissements dans FxCop . Vous pouvez constater des avertissements dans les domaines suivants:

  

Avertissements concernant la conception

     

Avertissements prenant en charge une bibliothèque appropriée   conception comme spécifié par le .NET   Directives de conception du cadre.

     

Avertissements de la mondialisation

     

Avertissements compatibles avec le monde entier   bibliothèques et applications.

     

Avertissements d'interopérabilité

     

Avertissements permettant d'interagir avec   Clients COM.

     

Avertissements de dénomination

     

Avertissements qui soutiennent l’adhésion au   conventions de nommage du .NET   Directives de conception du cadre.

     

Avertissements relatifs aux performances

     

Avertissements favorables aux performances élevées   bibliothèques et applications.

     

Avertissements de sécurité

     

Avertissements prenant en charge des bibliothèques plus sûres   et applications.

En fonction de votre application, certaines de ces zones peuvent ne pas être très intéressantes, mais par exemple, besoin d'interopérabilité COM, les tests peuvent vraiment vous aider à éviter les pièges.

Autres outils

D'autres outils de vérification statiques peuvent vous aider à détecter des bogues tels que ne disposant pas d'un IDisposable , des fuites de mémoire et autres bugs subtils. Pour un cas extrême, consultez le Outil NStatic .

  

NStatic est utilisé pour suivre des éléments tels que les paramètres redondants, les expressions évaluées en constantes, les boucles infinies et de nombreuses autres mesures.

L'avantage est que vous pouvez rechercher et quantifier une dette technique . dans votre application logicielle.

Je trouve les outils d’analyse de code statiques indispensables pour le développement d’applications pour grandes entreprises, où de nombreux développeurs et testeurs se succèdent tout au long de la vie d’une application, tout en maintenant la qualité du code et la gestion de la dette technique.

Quels sont les avantages de l'analyse de code statique sur votre code source?

Les avantages dépendent du type d’analyse de code statique effectuée. L'analyse de code statique peut aller de techniques simples à sophistiquées. Par exemple, la génération de métriques sur votre code source pour identifier le code sujet aux erreurs est une technique. D'autres techniques tentent activement de trouver des bogues dans votre code. Des techniques sophistiquées utilisent des méthodes formelles pour prouver que votre code est exempt de bugs.

Par conséquent, l’avantage dépend du type d’analyse de code statique utilisé. Si la technique produit des métriques (telles que la complexité du code, etc.), vous pouvez utiliser ces métriques lors de la révision du code pour identifier le code sujet aux erreurs. Si la technique détecte des bogues, l'avantage est que le développeur peut identifier les bogues avant le test unitaire. Si des techniques formelles reposant sur des méthodes sont utilisées pour prouver que le code ne contient pas de bogues, l'avantage est que ces informations pourraient être utilisées pour prouver au service d'assurance qualité (ou aux autorités de certification) que le code est exempt de certains types de bogues.

Vous trouverez également une description plus détaillée des techniques et des avantages sur cette page: www.mathworks.com / static-analysis

Je vais essayer de décrire les principaux:

  • L'analyse de code statique identifie les détections dans le programme à un stade précoce, ce qui entraîne une réduction du coût de leur réparation.
  • Il peut détecter des défauts dans les entrées et les sorties du programme qui ne peuvent pas être vus par des tests dynamiques.
  • Il analyse automatiquement les codes non compilés et identifie les vulnérabilités.
  • Ce que je sais de l’utilisation de checkmarx, c’est que l’analyse de code statique corrige plusieurs vulnérabilités en un point unique, ce qui fait gagner beaucoup de temps au développeur.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top