C#で使用できる静的分析ツールは何ですか?[閉まっている]


174

C#コードに対する静的分析に使用できるツールは何ですか?FxCopとStyleCopについて知っています。他にありますか?私は以前NStaticに出くわしましたが、永遠に見えるように開発されています-私が見たことのないものからかなり滑らかに見えます。

これらと同じように(これは主に静的分析に対する私の関心です)、マルチスレッドの問題(デッドロック、競合状態など)のコードをテストするためのツールも少し不足しているように見えます。Typemock Racerがポップアップしたので、それを見ていきます。これ以上の何か?

使用したツールについての実際の意見は高く評価されます。


@IraBaxter Metaこの質問についての議論を開始しました。必要に応じて、この質問を削除してはならない理由について、あなたの意見を表明してください。

回答:


341

コード違反検出ツール:

  • Fxcop、Microsoftによる優れたツール。.netフレームワークのガイドラインへの準拠を確認します。

    2010年10月の編集:スタンドアロンのダウンロードとして利用できなくなりました。これは現在Windows SDKに含まれており、インストール後はProgram Files \ Microsoft SDKs \ Windows \ [v7.1] \ Bin \ FXCop \ FxCopSetup.exeにあります。

    2018年2月を編集:この機能はVisual Studio 2012以降にコード分​​析として統合されました

  • コードソース分析に基づくClocksharp(C#2.0へ)
  • Mono.GendarmeFxcopに似ていますが、オープンソースライセンス(Mono.Cecilに基づく)
  • スモーキーに基づいてFxCopのと憲兵に類似し、Mono.Cecil。現在は開発を行っていないため、メインの開発者は現在Gendarmeチームと協力しています。
  • Coverity Prevent™for C#、商用製品
  • PRQA QA・C#、商用製品
  • PVS-Studio、商用製品
  • セキュリティの欠陥を特定するのに役立つビジュアルスタジオアドインであるCAT.NETを編集してください。
  • CodeIt.Right
  • スペック番号
  • Pex

品質測定ツール:

  • NDepend、優れたビジュアルツール。コードメトリック、ルール、差分、結合、依存関係の調査に役立ちます。
  • Nitriqは無料で、独自のメトリック/制約、優れた視覚化を簡単に作成できます。2018年2月を編集:ダウンロードリンクが無効になりました。2019年6月17日の編集:リンクが停止していない。
  • RSM Squared、コードソース分析に基づく
  • C#メトリックC#の完全な解析を使用
  • SourceMonitor、時々アップデートを取得する古いツール
  • Code MetricsReflectorアドイン
  • Vilは、.NET 2.0をサポートしない古いツールです。2018年1月を編集:リンクが無効になりました

スタイルツールの確認:

重複検出:

  • ソースコードに基づくSimian。たくさんの言語で動作します。
  • CloneDR、言語境界でのみパラメーター化されたクローンを検出します(C#以外の多くの言語も処理します)
  • Visual Studioプラグインのクローン探偵。(それは使用しています内部でConQATをます
  • Atomiq、ソースコードに基づく、多くの言語、クールな「ホイール」視覚化

一般的なリファクタリングツール

  • ReSharper-主にクールなC#コード分析とリファクタリング機能

4
FxCopに関するMSDNページを参照してくださいmsdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCopは、マネージコードアセンブリ(.NET Framework共通言語ランタイムを対象とするコード)を分析するアプリケーションです可能な設計、ローカリゼーション、パフォーマンス、セキュリティの改善など、アセンブリに関する情報を報告します。」
サラ船

FxCopリンクがMicrosoftサイトから削除されました。:ここではFxCopの10.0 "ダウンロード"であるmicrosoft.com/downloads/...
ulrichb

これはシミアンですか:harukizaemon.com/simian/index.html?(リンクが壊れました)。また、.NET 1.1のみのようです。
Theraot

@Theraotありがとう、URLを変更しました。.NETバージョンに関して、SimianはJava 5上の.NET 1.1で実行できますが、それはそれが他のバージョンの.NETでの重複を検出することを意味しません
Julien Hoarau

Nitriqはもう利用できないようです。ダウンロードリンク(現在はTelerikの一部であるNimbleProsにリダイレクトされます)に、「申し訳ありません。Nitriqは提供されなくなりました」
Narayana

7

NDependツールはQuality Metric Toolsとして引用されていますが、ほとんどがコード違反検出ツールでもあります。免責事項:私はツールの開発者の1人です

NDependを使用すると、LINQクエリ(CQLinqと呼ばれるもの)に対してコードルールを記述できます。デフォルトでは、200を超えるCQLinqコードルールが提案されています。CQLinqの長所は、コードルールを記述して、すぐに結果を得ることが簡単なことです。一致したコード要素を閲覧する機能が提案されています。例えば:

CQLinqコード規則

そのほか、NDependには、機能のような他の多くの静的分析が付属しています。これらには以下が含まれます:


私は過去数週間にわたってNDependを試用する機会がありました-大きなファンであり、可能な場合は開発ライセンスを取得します。:)あなたの仕事をありがとう!
Michael Armes

1
  • ジャンダルムは、オープンソースのルールベースの静的アナライザーです(FXCopに似ていますが、さまざまな問題がたくさん見つかります)。
  • Clone Detectiveは、重複するコードを検出するVisual Studioの優れたプラグインです。
  • また、Monoについて言えば、Monoコンパイラーでコンパイルする行為(コードが十分にプラットフォームに依存しない場合は、とにかく努力したい目標)が、Visual Studioが完全に見逃している大量の参照されていない変数やその他の警告を見つけます(警告レベルが4に設定されていても)。

1

CAT.NETを見たことがありますますか?

宣伝文句から-

CAT.NETは、クロスサイトスクリプティング(XSS)、SQLインジェクション、XPathインジェクションなどの一般的な攻撃ベクトルを引き起こす可能性がある特定の一般的な脆弱性の一般的なバリアントを特定するのに役立つバイナリコード分析ツールです。

私は初期のベータ版を使用しましたが、見る価値のあることがいくつか現れました。






-1

Axivion Bauhaus Suiteは、C#(およびC、C ++、Java)で動作する静的分析ツールです。

次の機能を提供します。

  • ソフトウェアアーキテクチャの視覚化(依存関係を含む)
  • アーキテクチャー規則の適用(例:階層化、サブシステム、呼び出し規則)
  • クローン検出-コピーと貼り付け(および変更されたコード)を強調表示
  • デッドコード検出
  • サイクル検出
  • ソフトウェアメトリック
  • コードスタイルチェック

これらの機能は、1回限り、または継続的インテグレーションプロセスの一部として実行できます。システムがソースコード管理システムと統合されている場合、問題はプロジェクトごとまたは開発者ごとに強調表示できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.