2016-11-16 5 views
2

Я пытаюсь создать собственное правило SonarQube в VisualStudio 2015, используя генератор Roslyn SDK.Пользовательские правила SonarQube, созданные с помощью генератора Roslyn SDK, всегда выдают тип «Code Smell»

Генератор отлично работает, и я могу опубликовать файл .jar на сервере SonarQube и использовать мое настраиваемое правило в ежедневных сборках. Теперь я хотел бы классифицировать правило как «Vulnerabilty», но он всегда выглядит как «Code Smell».

Я попробовал несколько подходов:

  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
  • Пользовательские C# анализатор, разработанный с SonarQube.Roslyn.SDK ст... 1.0

ответ

1

К сожалению, пока не реализована способность явно задавать категорию - см. https://jira.sonarsource.com/browse/SFSRAP-48

В качестве временного решения вы можете добавить тег security к правилу и правила будут классифицированы как Vulnerabilty благодаря automatic conversion of tag into category in SonarQube. Однако кажется, что SonarQube.Plugins.Roslyn.RuleGenerator не учитывает свойство CustomTags при построении правила SonarQube, но добавляет newRule.Tags = diagnostic.CustomTags?.ToArray(); к методу SonarQube.Plugins.Roslyn.RuleGenerator.GetAnalyzerRules и перестраивает sonarqube-roslyn-sdk.

+0

Благодарим за предложение. Я попытался добавить пользовательский тег 'security', но кажется, что генератор плагина игнорирует пользовательский тег при создании плагина SonarQube. Проверяя текущую реализацию в SonarQube.Roslyn.SDK v. 1.0, я действительно обнаружил, что класс SonarQube.Plugins.Roslyn.RuleGenerator не рассматривает свойство CustomTags при построении правила SonarQube. Добавление этой строки кода 'newRule.Tags = diagnostic.CustomTags .ToArray (?);' в методе SonarQube.Plugins.Roslyn.RuleGenerator.GetAnalyzerRules и восстановления локально, работал отлично –

+0

@ MarcoFranzé не было известно, что пользовательские теги игнорируются, поэтому обновляйте ответ, если вы хотите принять его как правильный. – Godin

+0

@ tamas-sonarsource-team вы могли бы взглянуть на это - это, по-видимому, обычная трудность в использовании SDK? – Godin