首页 > 解决方案 > Visual Studio 2017:规则集不会执行

问题描述

我想定义一组在编译时检查的自定义规则。但这似乎不起作用。

示例:我直接选择一个规则,我会得到预期的警告。 在此处输入图像描述

但是,当我创建一个包含完全相同规则的自定义规则集时,我将不会收到预期的警告。 在此处输入图像描述

有什么问题?

编辑:

void f(std::string& i) {
    std::string s = i;
    cout << s;
}

int main()
{
    std::string s ("abc");
    f(s);
}

这给了我预期的警告警告C26460 函数“f”的引用参数“i”可以标记为 const (con.3)。在第一种情况下。即使我创建了一个包含所有可用规则的​​自定义规则集,我也不会收到任何警告。

在这里,您看到我选择了自定义规则集: 在此处输入图像描述

编辑:规则集操作必须更改一次才能启用。当我创建一个仅包含 const-checks 的新规则集时,我将得到一个不起作用的 .ruleset,如下所示:
在此处输入图像描述 在规则集编辑器中,它看起来像这样:
在此处输入图像描述 当我将其操作从警告更改为错误时:
在此处输入图像描述 然后.ruleset 为每个测试用例获取额外的行:
在此处输入图像描述 当我将操作更改回警告时,它看起来像这样:
在此处输入图像描述 现在它按预期工作。

标签: visual-studio-2017

解决方案


我已经能够使用 Visual Studio 2017 重现您的错误。我不确切知道我更改了什么(或者我是否更改了任何内容),但我能够看到您期望使用自定义规则集的代码分析警告.

我会尝试的事情:

  1. 仔细检查错误列表窗口是否可见并且没有隐藏在某处。
  2. 打开规则集文件,将操作更改为错误,然后返回警告并保存。我不认为这是问题,但这是我所做的事情之一,之后我开始看到错误列表窗口。

自定义规则集正常工作的 Visual Studio 2017 屏幕截图


推荐阅读