2

我正在尝试使用 Roslyn SDK Generator 在 VisualStudio 2015 中创建自定义 SonarQube 规则。

生成器工作正常,我可以将 .jar 文件发布到 SonarQube 服务器并在日常构建中使用我的自定义规则。现在我想将规则归类为“漏洞”,但它总是显示为“代码气味”。

我尝试了几种方法:

  1. 将 DiagnosticDescriptor 类的“类别”更改为“安全”

    private const string Category = "Security";
    
    private static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: Description);
    
    public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get { return ImmutableArray.Create(Rule); } }
    
  2. 更改了生成器提供的 xml 模板并使用新的 xml 重新生成了插件(我尝试使用“SECURITY”和“SECURITY_COMPLIANCE”代替生成的“MAINTENABILITY_COMPLIANCE”)

     <sqale xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <chc>
        <key>SECURITY</key>
        <chc>
          <rule-key>MyRule</rule-key>
          <prop>
            <key>remediationFunction</key>
            <txt>CONSTANT_ISSUE</txt>
          </prop>
          <prop>
            <key>offset</key>
            <txt />
            <val>15min</val>
          </prop>
        </chc>
      </chc>
    </sqale>
    

到目前为止没有任何效果。

我正在使用以下配置:

  • VS2015 更新 3
  • SonarQube v. 6.1
  • SonarLint v. 2.8
  • 使用 SonarQube.Roslyn.SDK v. 1.0 开发的自定义 C# 分析器
4

1 回答 1

1

不幸的是,似乎尚未实现明确设置类别的能力 - 请参阅 https://jira.sonarsource.com/browse/SFSRAP-48

作为一种解决方法,您可以将标签添加到规则中,并且由于标签自动转换为 SonarQube 中的security类别,规则将被分类。然而,似乎在构建 SonarQube 规则时没有考虑属性,而是添加到方法和重建将完成这项工作。VulnerabiltySonarQube.Plugins.Roslyn.RuleGeneratorCustomTagsnewRule.Tags = diagnostic.CustomTags?.ToArray();SonarQube.Plugins.Roslyn.RuleGenerator.GetAnalyzerRulessonarqube-roslyn-sdk

于 2016-11-16T20:29:50.073 回答