3

CQL を使用すると、CodeWasChangedのメソッドを簡単に見つけることができますが、メトリクスも比較する必要があります。変更されたコードを見つけて、改善されたかどうかを確認したいと考えています。

混合コード ベースのndependcppdependを評価しています。私は両方に非常に感銘を受けました。特に、cppdepend が従来の c++ と最新の c++ にうまく対応しているようです。

これを行う方法を考え出すことができれば、必要なことはすべて CQL 内で行うことができますが、それ以外の場合は、レポートを外部で結合するなどのことを行う必要があります。そのため、フォールバックとして CQL からのレポート生成の自動化と比較に関するヒントをいただければ幸いです。VisualCppDepend または VisualNDepend 内で CQL を使用すると、メトリクス ビューでクエリの結果を確認できるので、明らかに満足です。結果のライブ調査は、他のツールと比較して、これらのツールで重要です。

CodeWasChanged および IsInOlderBuild のような他の句に関するコメントは、CQL古いビルドに対して強制的に実行することを示しています。これは、リビジョン間でクエリを機能させることができないことを示唆しています。

私が望むクエリの種類は、構文を想像するようなものです。

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10

バージョン間で動作するように一般化

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and BaseMethodCe < 10

または多分

SELECT METHODS WHERE CodeWasChanged and MethodCe > 10 and Older(MethodCe < 10)
4

1 に答える 1

3

Andy は、CQLinq (Code Query と Rule over LINQ)を使用すると、コード メトリックのトレンドが可能であり、できれば簡単に達成できることを確認しています。たとえば、デフォルトのコード規則を参照してください。複雑なメソッドをさらに複雑にすることは避けてください (Source CC) :

// <Name>Avoid making complex methods even more complex (Source CC)</Name>
// To visualize changes in code, right-click a matched method and select:
//  - Compare older and newer versions of source file
//  - Compare older and newer versions disassembled with Reflector

warnif count > 0 
from m in JustMyCode.Methods where
 !m.IsAbstract &&
  m.IsPresentInBothBuilds() &&
  m.CodeWasChanged()

let oldCC = m.OlderVersion().CyclomaticComplexity
where oldCC > 6 && m.CyclomaticComplexity > oldCC 

select new { m,
    oldCC ,
    newCC = m.CyclomaticComplexity ,
    oldLoc = m.OlderVersion().NbLinesOfCode,
    newLoc = m.NbLinesOfCode,
}

デフォルト グループの関連するデフォルト コード ルールを参照することをお勧めします: Code Quality Regression

于 2010-12-16T10:44:54.300 に答える