如何阻止SonarLint在VS错误屏幕中不断重新出现警告

时间:2017-01-17 16:18:27

标签: c# sonarlint sonarlint-vs

我们正在尝试使用VS2015 Enterprise的SonarLint并且有一个令人恼火的问题,除非我们解决它,否则它可能会成为一个阻碍。酷睿i5处理器,8GB内存,大型SSD,Windows 7 Pro:

我们有大量相同警告代码的遗留警告(例如S1444)。我可以使用现有的代码但是想要将它们用于将来的工作,所以我想要抑制现有的警告,但代码中没有凌乱的编译指示。因此,我在错误列表屏幕和rt-单击中多次选择它们,然后单击在抑制文件中。在相应的项目中创建GlobalSuppressions文件并进行更新。

然而,警告仍会继续显示。我清理并重建了解决方案,并且“压制了”'警告继续显示,仍具有“激活”状态的抑制状态。 (我猜这意味着没有被压制')。

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

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

另外我注意到有时候rt-click上下文菜单包括Suppress->有时候它没有。这有什么作用?

1 个答案:

答案 0 :(得分:2)

我无法重现您所面临的问题。我创建了一个ConsoleApplication (C#)并使用了默认代码。然后,我选择了所有问题,右键单击并在抑制文件抑制。我试图重建,清理,重新启动VS并且警告不再显示。

Program.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)
        {
        }
    }
}

GlobalSuppression.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)。你能创建一个简单的repro案例,以便我可以使用它来找出发生了什么吗?