使用 Roslyn SDK 生成器生成的自定义 SonarQube 规则始终发出类型 "Code Smell"



我试图在VisualStudio 2015中创建一个自定义SonarQube规则,使用Roslyn SDK生成器。

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

我尝试了几种方法:

  1. 将DiagnosticDescriptor类的"Category"改为"Security"

    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"one_answers"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 Update 3SonarQube v. 6.1SonarLint v. 2.8
  • 使用SonarQube.Roslyn.SDK v. 1.0开发的自定义c#分析器

遗憾的是,似乎还没有实现显式设置类别的能力-参见https://jira.sonarsource.com/browse/SFSRAP-48

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

相关内容

  • 没有找到相关文章

最新更新