You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NDepend API和X#,获取特定规则关联问题的GetIssues参数来源咨询

NDepend API获取特定规则关联问题的解决方法

我刚开始使用NDepend API,仍在摸索一些基础概念。我想要列出与某一特定规则相关联的所有问题(我使用X#而非C#,因此语法略有不同)。

我已完成加载项目、运行分析并获取所有问题的操作:

VAR ndprojPath := "Test.ndproj".ToAbsoluteFilePath()
VAR ndProject := ndManager.LoadProject(ndprojPath)
// Do an analysis
VAR analysisResult := ndProject:RunAnalysis()
VAR issuesSet := analysisResult:ComputeIssues()

接着我枚举所有规则:

FOREACH nRule AS IRule IN issuesSet:AllRules

现在我希望通过GetIssues()扩展方法获取每个规则的问题:

VAR nIssues := nRule:GetIssues(???)"

我的问题是:该参数从何处获取?它必须是IQueryExecutionSuccessResult类型吗?我从文档中了解到该类型用于代码查询,但此处并未涉及代码查询操作?


解决方法

你完全没必要纠结GetIssues()的参数,因为你已经拿到的IIssuesSet实例(也就是代码里的issuesSet)已经提供了更直接的方法来获取指定规则的问题。

直接用IssuesForRule()方法即可,代码示例如下:

FOREACH nRule AS IRule IN issuesSet:AllRules
    VAR nIssues := issuesSet:IssuesForRule(nRule)
    // 在这里处理获取到的nIssues集合
NEXT

如果一定要使用GetIssues()方法,参数确实是IQueryExecutionSuccessResult类型,这个实例可以从analysisResult中获取,代码如下:

VAR queryResult := analysisResult:QueryExecutionSuccessResult
FOREACH nRule AS IRule IN issuesSet:AllRules
    VAR nIssues := nRule:GetIssues(queryResult)
NEXT

但这种方式完全没必要,因为IIssuesSet的IssuesForRule()就是专门为这个场景设计的,更简洁高效。

内容的提问来源于stack exchange,提问作者Peter M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 14:22:46