ndependとcppdependのcqlは、改訂全体のメトリックの変化を確認します
質問
CQLにより、方法を簡単に見つけることができます Codewaschanged しかし、メトリックを比較する必要があります - 変更されたコードを見つけて、改善されたかどうかを確認したいです。
私は評価しています ndepend と cppdepend 混合コードベースの場合。私は両方に非常に感銘を受けました。特に、CPPDependが私たちのレガシーと現代の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)
解決
アンディ、 cqlinq(linqに対するコードクエリとルール) コードメトリックのトレンドが可能であり、うまくいけば簡単に達成できることを確認してください。たとえば、デフォルトのコードルールを参照してください 複雑な方法をさらに複雑にすることは避けてください(ソース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,
}
デフォルトグループの関連するデフォルトコードルールを参照することをお勧めします。 コード品質回帰