【问题标题】:Disable rule from code analysis for a specific project禁用特定项目的代码分析规则
【发布时间】:2014-05-05 13:05:18
【问题描述】:

我们有一个包含多个项目的解决方案(一些生产代码项目,一些包含我们的单元测试的测试项目)。

基本上,我们希望为所有项目(包括测试项目)启用相同的代码分析规则,以使它们保持一致。尽管如此,我只是想为我们的测试项目禁用两个代码分析规则(CA1707 和 CA1702)。我可以创建一个新的 .ruleset 文件,其中包含与我的主规则集完全相同的规则,但我不想复制这些设置。假设,我们决定将来在我们的主规则集中启用一个规则,我希望它在我的 testproject-ruleset 中自动启用。

这是定义包含所有解决方案通用规则的主规则集(因此 CA 1707 和 CA 1702 将被排除)并为我的生产代码设置合并规则集的正确方法,使用主规则集作为基础,另外还包括其他两个?

或者有没有办法将我的主规则集定义为包含所有规则,然后从规则集中显式排除它们?

【问题讨论】:

    标签: visual-studio visual-studio-2012 code-analysis


    【解决方案1】:

    是的,这是可能的。规则集可以“导入”其他规则集,然后覆盖单个或多个规则的设置。这可以使用 http://msdn.microsoft.com/en-us/library/dd264974.aspx 的“从多个现有规则集创建自定义规则集”中描述的步骤从 Visual Studio UI 进行配置(即使您只想导入单个规则集)。或者,这可以通过手动编辑规则集文件 XML 以添加对导入规则集的引用来完成。例如:

    <Include Path="SomeOtherRuleset.ruleset" Action="Default" />
    

    有关此示例,请参阅随 Visual Studio 安装的 ExtendedCorrectnessRules.ruleset 文件。

    【讨论】:

    • 所以,如果我有一个“主规则集”,例如包含 &lt;Rule Id="CA1702" Action="Error" /&gt; 和另一个带有 &lt;Include Path="main.ruleset" Action="Default" /&gt; ... &lt;Rule Id="CA1702" Action="None" /&gt; ... 的“派生规则集”,即使 main.ruleset 规则 1702 将被禁用启用了吗?
    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2012-04-25
    相关资源
    最近更新 更多