如何用NDepend加载n天前基线分析结果并与最新分析对比?
如何加载NDepend中n天前基线对应的分析结果?
我需要对比两类NDepend分析结果:
- 最新的分析结果
- n天前(例如15天)创建的基线对应的分析结果
目前编写的X#代码只能获取最新结果,TryGetMostRecentAnalysisResultRef仅加载最新分析结果,不清楚如何获取设置的基线对应的结果:
VAR ndProject := ndManager.LoadProject(ndprojPath) LOCAL analysisResultRef AS IAnalysisResultRef ndProject:BaselineDuringAnalysis:AnalysisResultMode := BaselineAnalysisResultMode.NDaysAgoAnalysisResult ndProject:BaselineDuringAnalysis:AnalysisResultCreatedNDaysAgo := 15 VAR result := ndProject:TryGetMostRecentAnalysisResultRef(OUT analysisResultRef) VAR refDate1 := analysisResultRef:Date Console.WriteLine(i"Date1: {refDate1}")
解决方案
要获取n天前基线对应的分析结果,需通过项目的历史分析结果集合进行筛选,而非依赖TryGetMostRecentAnalysisResultRef。具体步骤如下:
- 获取所有历史分析结果引用
VAR allAnalysisResults := ndProject:GetAllAnalysisResultRefs()
- 筛选符合n天前条件的基线结果
计算目标日期范围,筛选出最接近目标日期且不晚于该日期的分析结果:
LOCAL targetDate := DateTime.Today.AddDays(-15) VAR baselineResult := allAnalysisResults :OrderByDescending(Function(r) r.Date) :FirstOrDefault(Function(r) r.Date.Date <= targetDate.Date)
- 获取最新分析结果
LOCAL latestAnalysisRef AS IAnalysisResultRef VAR gotLatest := ndProject:TryGetMostRecentAnalysisResultRef(OUT latestAnalysisRef) VAR latestResult := gotLatest ? latestAnalysisRef : NULL
- 对比两类结果
IF baselineResult <> NULL AND latestResult <> NULL Console.WriteLine(i"基线分析日期: {baselineResult.Date}") Console.WriteLine(i"最新分析日期: {latestResult.Date}") // 在此添加你的结果对比逻辑 ELSE Console.WriteLine("未找到符合条件的分析结果") ENDIF
注意:
BaselineDuringAnalysis的设置仅用于后续分析过程中关联基线,并不会直接返回对应的分析结果引用,必须通过筛选历史结果集的方式获取目标基线。
内容的提问来源于stack exchange,提问作者Peter M.
相关产品推荐
相关产品推荐

