Quels outils d'analyse statique sont disponibles pour C #? [fermé]

174

Quels outils sont disponibles pour l'analyse statique par rapport au code C #? Je connais FxCop et StyleCop. Y en a-t-il d'autres? J'ai déjà rencontré NStatic, mais il est en développement depuis ce qui semble être une éternité - il a l'air assez élégant d'après le peu que j'en ai vu, donc ce serait bien s'il verrait un jour le jour.

Dans le même ordre d'idées (c'est avant tout mon intérêt pour l'analyse statique), les outils de test de code pour les problèmes de multithreading (blocages, conditions de concurrence, etc.) semblent également un peu rares. Typemock Racer vient d'apparaître alors je vais regarder ça. Quelque chose au-delà de ça?

Les opinions réelles sur les outils que vous avez utilisés sont appréciées.

Paul Mrozowski
la source
@IraBaxter J'ai commencé une discussion sur cette question sur Meta , et je vous invite à exprimer vos arguments pour expliquer pourquoi cette question ne devrait pas être supprimée, si vous le souhaitez.

Réponses:

341

Outils de détection de violation de code:

  • Fxcop , excellent outil de Microsoft. Vérifiez la conformité avec les directives du framework .net.

    Edit Octobre 2010: n'est plus disponible en téléchargement autonome. Il est maintenant inclus dans le SDK Windows et après l'installation, se trouve dans Program Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exe

    Edit février 2018 : cette fonctionnalité a maintenant été intégrée dans Visual Studio 2012 et versions ultérieures en tant qu'analyse de code

  • Clocksharp , basé sur l'analyse de la source du code (vers C # 2.0)

  • Mono.Gendarme , similaire à Fxcop mais avec une licence open source (basée sur Mono.Cecil )

  • Smokey , similaire à Fxcop et Gendarme, basé sur Mono.Cecil . Plus sur le développement, le développeur principal travaille maintenant avec l'équipe Gendarme.

  • Coverity Prevent ™ pour C # , produit commercial

  • PRQA QA · C # , produit commercial

  • PVS-Studio , produit commercial

  • CAT.NET , complément de studio visuel qui aide à identifier les failles de sécurité Edit novembre 2019: Link is dead.

  • CodeIt.Right

  • N ° de spécification

  • Pex

  • Options SonarQube , FOSS et commerciales pour prendre en charge l'écriture de code plus propre et plus sûr.

Outils métriques de qualité:

  • NDepend , excellent outil visuel. Utile pour les métriques de code, les règles, les différences, les couplages et les études de dépendance.
  • Nitriq , gratuit, peut facilement écrire vos propres métriques / contraintes, de belles visualisations. Edit février 2018: les liens de téléchargement sont maintenant morts. Edit 17 juin 2019: Liens pas morts.
  • RSM Squared , basé sur l'analyse de code source
  • Métriques C # , utilisant une analyse complète de C #
  • SourceMonitor , un ancien outil qui reçoit parfois des mises à jour
  • Code Metrics , un complément Reflector
  • Vil , ancien outil qui ne prend pas en charge .NET 2.0. Edit Janvier 2018: Lien maintenant mort

Vérification des outils de style:

  • StyleCop , outil Microsoft (exécuté depuis l'intérieur de Visual Studio ou intégré dans un projet MSBuild). Également disponible en tant qu'extension pour Visual Studio 2015 et C # 6.0
  • Agent Smith , plugin de validation de style de code pour ReSharper

Détection de duplication:

  • Simian , basé sur le code source. Fonctionne avec de nombreuses langues.
  • CloneDR , détecte les clones paramétrés uniquement sur les limites de la langue (gère également de nombreuses langues autres que C #)
  • Clone Detective un plugin Visual Studio. (Il utilise ConQAT en interne)
  • Atomiq , basé sur le code source, de nombreux langages, une visualisation "roue" sympa

Outils de refactoring généraux

  • ReSharper - Fonctionnalités d'analyse et de refactoring de code C # majoritairement cool
Julien Hoarau
la source
4
Voir la page MSDN sur FxCop: msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCop est une application qui analyse les assemblys de code managé (code qui cible le Common Language Runtime .NET Framework) et fournit des informations sur les assemblys, telles que les améliorations possibles de la conception, de la localisation, des performances et de la sécurité. "
Sarah Vessels
Le lien FxCop a été supprimé du site Microsoft. Voici le "téléchargement" FxCop 10.0: microsoft.com/downloads
...
Est-ce Simian: harukizaemon.com/simian/index.html ? (vous avez un lien cassé). Il semble également que ce ne soit que .NET 1.1.
Théraot
@Theraot Merci, j'ai changé l'URL. Concernant la version .NET, Simian peut tourner sous .NET 1.1 sur Java 5 mais cela ne veut pas dire qu'il détecte des duplications dans d'autres versions de .NET
Julien Hoarau
Nitriq ne semble plus disponible. Le lien de téléchargement (redirige maintenant vers NimblePros, qui fait partie de Telerik) indique "Nous sommes désolés, nous n'offrons plus Nitriq"
Narayana
7

L'outil NDepend est cité sous le nom de Quality Metric Tools, mais c'est à peu près aussi un outil de détection de violation de code . Clause de non-responsabilité: je suis l'un des développeurs de l'outil

Avec NDepend, on peut écrire une règle de code sur des requêtes LINQ (ce que nous appelons CQLinq) . Plus de 200 règles de code CQLinq sont proposées par défaut. La force de CQLinq est qu'il est simple d'écrire une règle de code et d'obtenir immédiatement des résultats. Les installations sont proposées pour parcourir les éléments de code correspondants. Par exemple:

Règle de code CQLinq

En plus de cela, NDepend est fourni avec de nombreuses autres fonctionnalités d'analyse statique . Ceux-ci inclus:

Patrick de l'équipe NDepend
la source
J'ai eu l'occasion d'essayer NDepend au cours des dernières semaines - grand fan, je vais obtenir une licence de développement quand je le peux. :) Merci pour votre travail!
Michael Armes
1
  • Gendarme est un analyseur statique basé sur des règles open source (similaire à FXCop, mais détecte de nombreux problèmes différents).
  • Clone Detective est un bon plug-in pour Visual Studio qui trouve le code en double.
  • En parlant également de Mono, je trouve que le fait de compiler avec le compilateur Mono (si votre code est suffisamment indépendant de la plate-forme pour le faire, un objectif que vous voudrez peut-être atteindre de toute façon) trouve des tonnes de variables non référencées et d'autres avertissements que Visual Studio manque complètement (même avec le niveau d'avertissement réglé sur 4).
Kris Erickson
la source
1

Avez-vous vu CAT.NET ?

Du texte de présentation -

CAT.NET est un outil d'analyse de code binaire qui permet d'identifier les variantes courantes de certaines vulnérabilités prédominantes qui peuvent donner lieu à des vecteurs d'attaque courants tels que le Cross-Site Scripting (XSS), SQL Injection et XPath Injection.

J'ai utilisé une version bêta précoce et il semble que certaines choses méritent d'être examinées.

Markdevilliers
la source
-1

Klocwork dispose d'un outil d'analyse statique pour C #: http://www.klocwork.com

Alen
la source
Notre entreprise a acheté ça. Dans la gamme de 30K $ pour nous
Dan dot net
-1

Optimyth Software vient de lancer un service d'analyse statique dans le cloud www.checkinginthecloud.com . Téléchargez simplement votre code en toute sécurité, exécutez l'analyse et obtenez les résultats. Pas de soucis.

Il prend en charge plusieurs langues, y compris C # plus d'informations peuvent être trouvées sur wwww.optimyth.com

Javier Salado
la source
-1

Axivion Bauhaus Suite est un outil d'analyse statique qui fonctionne avec C # (ainsi que C, C ++ et Java).

Il offre les fonctionnalités suivantes:

  • Visualisation de l'architecture logicielle (y compris les dépendances)
  • Application des règles architecturales, par ex. Couches, sous-systèmes, règles d'appel
  • Détection de clone - mise en évidence du copier-coller (et du code modifié)
  • Détection de code mort
  • Détection de cycle
  • Métriques du logiciel
  • Vérifications de style de code

Ces fonctionnalités peuvent être exécutées de manière ponctuelle ou dans le cadre d'un processus d'intégration continue. Les problèmes peuvent être mis en évidence par projet ou par développeur lorsque le système est intégré à un système de contrôle de code source.

Mark Dalgarno
la source