构建服务器加载自定义代码分析规则集失败

Posted

技术标签:

【中文标题】构建服务器加载自定义代码分析规则集失败【英文标题】:Build server fails to load custom code analysis ruleset 【发布时间】:2014-05-09 06:30:06 【问题描述】:

我们正在对我们的项目使用代码分析。作为其中的一部分,我们在构建服务器上启用了代码分析,以便进行连续检查。

现在我们收到此错误:

CA0063 : * 未能加载规则集文件“[name].ruleset”或其之一 相关规则集文件。

[name] 是我们内部网络上的一个规则集,可供所有人使用。

代码分析在每台本地机器上运行得非常好,但在构建服务器上却不行。我们该如何解决这个问题?

注意事项:

我们使用定制的规则集 我们尚未使用任何自定义规则

【问题讨论】:

您签入新规则集了吗?构建空间是否添加了规则集的路径? 规则集放在服务器可以访问的网络位置。 有什么理由你这样做并且没有将规则集添加到 tfs 中? 该规则集被 10 多个程序员使用,我希望能够即时打开和关闭任何规则,而无需重新分发。 那更危险。最好的方法是在 TFS 上包含适用于每个人的规则,也许在所有项目/程序员共享的文件夹中。更改完成后,仅当 CI 构建成功运行时才会提交更改。 【参考方案1】:

我也遇到了这个问题。我如何解决它是将我的自定义规则集添加到版本控制 (Git) 作为我的项目文件中的一个新目录。我们将 Jenkins 用于我们的 CI,因此在我的 Jenkins.build 中,我确保在 Jenkins 服务器上指定我的规则集的绝对文件路径,您可以通过查看 Jenkins 上的 Workspace 来获得。例如路径可能如下所示:

e:\Jenkins\workspace\SampleProj-Dev\Rulesets\CustomRules.ruleset

在 Jenkins.build 文件中,我向 msbuild.exe 程序执行添加了一个参数:

<arg line="/p:RunCodeAnalysis=true;CodeAnalysisRuleSet=e:\Jenkins\workspace\SampleProject-Dev\Rulesets\CustomRules.ruleset"/>

在我尝试使用相对路径但构建包含许多子项目之前,Jenkins 尝试将路径附加到不断变化的路径上。此路径基于当前构建的子项目,导致您收到相同的错误。

【讨论】:

【参考方案2】:

今晚我偶然发现了一个解决这个问题的方法,这个项目多年来一直受其困扰。我创建了一个新的配置 CHECKED 并且问题消失了。然后通过:

    从配置管理器中删除现有配置; 退出并保存(此步骤可能不是必需的);最后 从新创建的配置重新创建已删除的配置,已检查

问题现在在所有配置中都完全消失了。

这一切都在 Visual Studio 2013 中。

【讨论】:

以上是关于构建服务器加载自定义代码分析规则集失败的主要内容,如果未能解决你的问题,请参考以下文章

将自定义规则添加到 core 2.0 的代码分析器

Fxcop 针对 VS 2010 设计的自定义代码不适用于 VS 2012

自定义 cppcheck 规则集

自定义 MsBuild 任务因程序集加载错误而失败

Visual Studio 代码分析 (fxCop) 仅在第一次构建后运行

TFS 2015 - 自定义路径策略实施?