是否有可能在源代码中抑制 sonarcloud 的警告?

Is there a possibility to suppress warnings of sonarcloud in source code?

我遇到了一些 sonarcloud 警告的问题,这些警告在不久的将来不会被修复(现在应该被禁用)。

sonarcloud 在 CI 上构建期间发出警告。没有任何本地分析器。 有没有办法抑制项目、文件、class and/or 方法级别的源代码中的某些特定警告?

官方文档帮助不大,至少我没找到解决方法

sonarcloud是否尊重一些

#pragma warning disable S3881

或其他基于属性的方法或一些全局设置。

有多种方法可以做到这一点(至少在 java 中是这样,但我认为它可能对您有所帮助)

  1. GUI 方式 - 您可以在其中定义要与特定规则匹配的键和文件模式。这允许您例如。排除规则的测试或文件夹

  2. 注释方式(java 版本)- 在 Java 中,您可以通过使用 //NOSONAR <optional reason> 尾随它们来忽略扫描仪中的整行 - 我假设这也适用于 C#(但请验证,如果合适,请告诉我们)

  3. Annoation 方式(java 版本)- 但看起来类似于#pragma warning disable

    @SuppressWarnings("squid:S2068")
    

    就是这样,我们如何在 Java 中禁用代码块的规则 - 所以我假设你使用 #pragma warning disable S3881 的方法是正确的方向,但它应该是 #pragma warning disable csharpsquid:S3881 .

如前所述,我不是 C# 开发人员,也不真正熟悉该语言,但我希望 java 方式和 gui 方式能帮助您朝着正确的方向前进。

是的,SonarCloud 遵循 #pragma 语法:

#pragma warning disable S3881
// The statement that fails validation
#pragma warning restore S3881

S3881 替换为不适合您的号码。

#pragma 语法有效,但我觉得它很难看。 我更喜欢添加属性,我通过试验发现以下属性有效:

[SuppressMessage("SonarLint", "S125", Justification = "Ignored intentionally as a demo")]
public void When_X_Expect_Y()
{
    //string x = "trigger 'S125 - commented out code' issue in SonarLint";
}

SuppressMessage 的第一个参数似乎无关紧要。第二个关键有效。