2

NDepend 4.1 API を使用して、Visual Studio 2010 ソリューションのコード行数を数えています。このソリューションには、すべて .NET Framework 4 をターゲットにしているいくつかのプロジェクトがあります。コードは次のとおりです。

var servicesProvider = new NDependServicesProvider();
var projectManager = servicesProvider.ProjectManager;
var project = projectManager.CreateTemporaryProject( ... );
var analysisResult = project.RunAnalysis();

var methods = analysisResult.CodeBase.Application.Methods;
var totalLoc = methods.Where( i => i.NbLinesOfCode.HasValue ).Sum( i => i.NbLinesOfCode.Value );

ソリューションに対してこの分析を繰り返し実行すると、ソリューションまたはそのコンパイル済みアセンブリをまったく変更していなくtotalLocても、異なる結果が得られます。たとえば、分析を 3 回実行すると、12100、12220、および 12075 の値が得られる可能性があります。totalLoc

もう少し掘り下げて、analysisResult.CodeBase.Application.Methods各メソッドの名前とNbLinesOfCodeテキスト ファイルへの書き込みを繰り返し始めました。任意の 2 回の解析実行からファイルを比較すると、ほとんどのメソッドで一貫した LOC カウントが示されますが、そうでないメソッドがいくつかあることに気付きます。これにはパターンが見られず、毎回同じメソッドのセットではないようです。

この奇妙な動作の原因は何ですか?

更新 1:単一のアセンブリで分析を実行すると、一貫した LOC カウントが得られます。この問題は、複数のアセンブリを に渡す場合にのみ発生しCreateTemporaryProjectます。

4

1 に答える 1