CK メトリクス (主に Cyclomatic Complexity) を計算する無料の C# ライブラリ (dll) について知っているかどうかお尋ねしたいと思います。
私が計画しているプロジェクトにはそれが必要です。CK メトリックを計算し、さまざまな形式で表示する完成したソリューションがすでにいくつかあることは知っていますが、必要なのはアプリケーション内から使用できるソリューションです。ですから、自分で書き始める前に、まずあなたに尋ねたかったのです。
ありがとう
CK メトリクス (主に Cyclomatic Complexity) を計算する無料の C# ライブラリ (dll) について知っているかどうかお尋ねしたいと思います。
私が計画しているプロジェクトにはそれが必要です。CK メトリックを計算し、さまざまな形式で表示する完成したソリューションがすでにいくつかあることは知っていますが、必要なのはアプリケーション内から使用できるソリューションです。ですから、自分で書き始める前に、まずあなたに尋ねたかったのです。
ありがとう
DrivenMetricsは、オープン ソースの C# コマンド ライン ツールです。コア機能は、コマンド ライン コンソール クライアントからライブラリとして分離されています (コア プロジェクトは、こちらから入手できます)。
非常に単純な場合でも、ニーズに合う場合があります。無料で、行数を数え、メソッドの循環的複雑度 (潜在的なコード パスの数) を計算します。
これは、 Mono.Cecil (同じライブラリ NDepend が依存している) のおかげで、IL を直接分析することによって実行されます。これにより、C#、VB.Net などで記述されたコードから構築されたアセンブリで分析を実行できます。
アップデート:
もう 1 つのオプションは、 Monoプロジェクトの静的分析ツールである素晴らしい Gendarmeです。
使用例として、以下のコードは、アセンブリ内のすべてのメソッドの循環的複雑度を示しています。
ModuleDefinition module = ModuleDefinition.ReadModule(fullPathToTheAssembly);
foreach (var type in module.Types)
{
foreach (var me in type.Methods)
{
if (!me.HasBody || me.IsGeneratedCode() || me.IsCompilerControlled)
continue;
var r = AvoidComplexMethodsRule.GetCyclomaticComplexity(me);
Console.WriteLine("{0}: {1}", me.ToString(), r);
}
}
私はSourceMonitorを使用しています。これは、C# を含むさまざまな言語のコードの複雑さとその他の指標を測定する優れたフリーウェア アプリです。コマンド ラインから実行して XML 出力を生成し、次に LINQ to XML を使用して、関心のあるデータを抽出して並べ替えます。次に、NVelocity を使用して HTML レポートを作成します。
管理ライブラリではないことはわかっていますが、必要なことはできると思うかもしれません。
C#アセンブリのコードメトリックを計算するために使用しているMicrosoftのツールがあります。
サイクロコンプレックス、メンテナンス性指数などが含まれます。
詳細はこちら:
http://blogs.msdn.com/b/camerons/archive/2011/01/28/code-metrics-from-the-command-line.aspx
ここからダウンロード:
http://www.microsoft.com/en-us/download/details.aspx?id=9422
それは無料ではありませんが、私はこの種のことのためにNCoverで良い経験をしました。また、そこにある多くのCIツールと非常によく統合されています。
82のコード メトリクスがサポートされている NDepend は、.NET 開発者向けのコード メトリクス Roll's Royce ツールです (ただし、商用ツールです)。