使用源代码管理历史记录和nDepend创建趋势

问题描述

我们想在源代码管理(git)中选择时间点以生成趋势指标。

我们正在通过nDepend的试验来确定其在我们15年以上的大型代码库中的价值。

到目前为止采取的步骤是:

  1. 签出给定的变更集
  2. 构建/分析
  3. 转到1,直到所有选定的变更集都已分析

我们看到的问题是,每次检出代码时,它都是一个全新的开始,包括nDepend配置。结果,我们有了一系列完全独立的分析集,没有趋势。

这是可以(轻松)完成的事情吗?

解决方法

我已经解决了一个问题:

  1. 更新NDepend设置以将NDepend项目附加到.suo文件
  2. 更新NDepend设置以使趋势指标“始终”记录下来
  3. 签出初始变更集:git checkout {changesethash}
  4. 构建解决方案
  5. 将新的NDepend项目附加到当前解决方案
  6. 为新的NDepend项目运行分析
  7. 将NDepend项目文件和NDependOut文件夹移至解决方案的.vs文件夹
  8. 编辑NDepend项目文件,从“。”调整.sln文件的路径。到“ ..”

这时,对要捕获其分析的每个变更集重复以下操作:

  1. 签出下一个变更集:git checkout {changesethash}
  2. 构建解决方案
  3. 运行NDepend分析

希望我什么都没错过。

,

希望您可以使用NDepend.API自动执行大多数步骤。您无需在自动化过程中将NDepend项目附加到sln,只需使用方法SetIDEFile()来引用NDepend项目中的解决方案即可:

var ndependServicesProvider = new NDependServicesProvider();
var projectManager = ndependServicesProvider.ProjectManager;
project.CodeToAnalyze.SetIDEFiles(new [] { new 
   IDEFile("C:\File.sln".ToAbsoluteFilePath()","-test") } );
IAnalysisResult analysisResult = project.RunAnalysis();

要汇总趋势指标,可以使用NDepend.Trend命名空间并从trend related OSS power tools中获取启发:日期日志趋势值

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...