【发布时间】:2017-05-16 22:43:30
【问题描述】:
我们正在考虑使用 nDepend 来开始跟踪我们的一些技术债务,尤其是在难以维护的方法和圈复杂度方面。
我相信这可能是通过获取基线报告,然后运行新的分析来提供增量。下面是我整理的一个非常基本的 Powershell,它可以做到这一点。
$nDepend = "C:\_DEVELOPMENT\nDepend\NDepend.Console.exe"
$targetFile = "C:\_DEVELOPMENT\AssemblyToTest\CodeChallenge.Domain.ndproj"
$projectFolder = Split-Path -Path $targetFile
$outputFolder = "nDepend.Reports"
$previous = ""
Clear-Host
# See if we already have a .ndar file in the output folder, if we do back it up so we can do a comparison
if (Test-Path $projectFolder\$outputFolder\*.ndar)
{
Write-Output "Backing up previous NDAR report"
Copy-Item $projectFolder\$outputFolder\*.ndar $projectFolder\previous.ndar
$previous = ".\previous.ndar"
}
#The output path appears to be relative to the .ndproj file
& $nDepend $targetFile /Silent /OutDir .\$outputFolder /AnalysisResultToCompareWith .\previous.ndar
这是我在 nDepend 中配置的规则:-
failif count > 1 bobs
from m in Methods
where m.NbLinesOfCode > 10
where m.WasChanged()
select new { m, m.NbLinesOfCode }
这样做的目的不是在我们有超过 10 行的方法时破坏构建,而是在有人编辑一个太大且没有改进它的现有方法(或使其变得更糟)时破坏构建。但是,无论我添加多少代码,规则的 where m.WasChanged() 部分都不会被触发。如果我将其注释掉,它会提醒我有很多超过 10 行的方法,但我只想知道最近更改的方法。
我是否使用错误的规则?或者我的 powershell 可能错误地使用了 /AnalysisResultToCompareWith 参数?
【问题讨论】:
标签: c# powershell ndepend