Пользовательские правила SonarQube, сгенерированные с помощью Roslyn SDK Generator, всегда имеют тип проблемы Code Smell

Я пытаюсь создать собственное правило SonarQube в VisualStudio 2015 с помощью генератора SDK Roslyn.

Генератор работает нормально, и я могу опубликовать файл .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 версии 6.1
  • SonarLint версии 2.8
  • Пользовательский анализатор C #, разработанный с помощью SonarQube.Roslyn.SDK v. 1.0

person Marco Franzé    schedule 16.11.2016    source источник


Ответы (1)


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

В качестве обходного пути вы можете добавить к правилу тег security, и правило будет отнесено к категории Vulnerabilty благодаря автоматическое преобразование тега в категорию в SonarQube. Однако кажется, что SonarQube.Plugins.Roslyn.RuleGenerator не учитывает свойство CustomTags при построении правила SonarQube, а добавляет newRule.Tags = diagnostic.CustomTags?.ToArray(); к методу _ 6_ и перестройка sonarqube-roslyn-sdk выполнит свою работу.

person Godin    schedule 16.11.2016
comment
Спасибо за ваше предложение. Я попытался добавить собственный тег security, но похоже, что генератор плагинов игнорирует пользовательский тег при создании плагина SonarQube. Проверяя текущую реализацию в SonarQube.Roslyn.SDK v. 1.0, я действительно обнаружил, что класс SonarQube.Plugins.Roslyn.RuleGenerator не учитывает свойство CustomTags при построении правила SonarQube. Добавление этой строки кода newRule.Tags = diagnostic.CustomTags?.ToArray(); в метод SonarQube.Plugins.Roslyn.RuleGenerator.GetAnalyzerRules и локальная перестройка отлично сработали. - person Marco Franzé; 18.11.2016
comment
@ MarcoFranzé не знал, что пользовательские теги игнорируются, поэтому обновите ответ на случай, если вы хотите принять его как правильный. - person Godin; 18.11.2016
comment
@ tamas-sonarsource-team не могли бы вы взглянуть на это - кажется, это обычная проблема при использовании SDK? - person Godin; 18.11.2016