4

我们正在尝试将 SonarLint 与 VS2015 Enterprise 结合使用,但遇到了一个令人恼火的问题,除非我们解决它,否则它可能会成为阻碍。Core i5 处理器、8GB 内存、大容量 SSD、Windows 7 Pro:

我们有大量相同警告代码的遗留警告(例如 S1444)。我可以使用现有代码,但想捕获它们以备将来工作,所以我想抑制现有警告,但代码中没有杂乱的编译指示。因此,我在错误列表屏幕中将它们全部选中,然后单击 rt,然后单击In Suppression File。GlobalSuppressions 文件在适当的项目中创建并更新。

但是,警告会继续显示。我清理并重建解决方案,继续显​​示“抑制”警告,仍然处于“活动”抑制状态(我猜这意味着“未抑制”)。

这意味着几乎(或实际上)不可能消除旧警告,以便清楚地暴露新警告,这就是练习的重点。

这是一个错误还是我错过了什么?

我还注意到,有时 rt-click 上下文菜单包含 Suppress-> 而其他时候则不包含。这是如何运作的?

4

1 回答 1

3

我无法重现您面临的问题。我创建了一个ConsoleApplication (C#)并使用了默认代码。然后我选择了所有问题,右键单击并Suppress in Suppression File。我尝试重建、清理、重新启动 VS 并且不再出现警告。

程序.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication14
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

全局抑制.cs

// This file is used by Code Analysis to maintain SuppressMessage 
// attributes that are applied to this project.
// Project-level suppressions either have no target or are given 
// a specific target and scoped to a namespace, type, member, etc.

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Sonar Code Smell", "S1172:Unused method parameters should be removed", Justification = "<Pending>", Scope = "member", Target = "~M:ConsoleApplication14.Program.Main(System.String[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Sonar Code Smell", "S1186:Methods should not be empty", Justification = "<Pending>", Scope = "member", Target = "~M:ConsoleApplication14.Program.Main(System.String[])")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Sonar Code Smell", "S1118:Utility classes should not have public constructors", Justification = "<Pending>", Scope = "type", Target = "~T:ConsoleApplication14.Program")]

我正在使用最新的 SonarLint 版本 (2.9.0.384)。您能否创建一个简单的复制案例,以便我可以使用它来了解发生了什么?

于 2017-01-18T14:21:46.413 回答