2

我面临一些 sonarcloud 警告的问题,这些警告在最近的将来不会修复(现在应该被禁用)。

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

官方文档没有太大帮助,至少我没有找到解决方案。

sonarcloud 是否尊重一些

#pragma warning disable S3881

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

4

3 回答 3

2

是的,SonarCloud 尊重以下#pragma语法:

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

您替换S3881为对您而言失败的号码。

于 2021-01-05T13:45:17.870 回答
1

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

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

  2. 注释方式(java 版本) - 在 Java 中,您可以忽略扫描仪中的整行,并在它们后面加上//NOSONAR <optional reason>- 我假设这也适用于 C#(但请验证,如果合适并让我们知道)

  3. Annoation 方式(java 版本) - 但看起来类似于 #pragma 警告禁用

    @SuppressWarnings("squid:S2068")
    

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

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

于 2020-08-12T13:13:30.443 回答
0

语法有效,#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似乎无关紧要。第二个是关键和有效的。

于 2021-10-21T14:58:39.920 回答