Я пытаюсь создать собственное правило SonarQube в VisualStudio 2015, используя генератор Roslyn SDK.Пользовательские правила SonarQube, созданные с помощью генератора Roslyn SDK, всегда выдают тип «Code Smell»
Генератор отлично работает, и я могу опубликовать файл .jar на сервере SonarQube и использовать мое настраиваемое правило в ежедневных сборках. Теперь я хотел бы классифицировать правило как «Vulnerabilty», но он всегда выглядит как «Code Smell».
Я попробовал несколько подходов:
Измененные «Категорию» класс 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); } }
Изменен шаблону 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
Благодарим за предложение. Я попытался добавить пользовательский тег 'security', но кажется, что генератор плагина игнорирует пользовательский тег при создании плагина SonarQube. Проверяя текущую реализацию в SonarQube.Roslyn.SDK v. 1.0, я действительно обнаружил, что класс SonarQube.Plugins.Roslyn.RuleGenerator не рассматривает свойство CustomTags при построении правила SonarQube. Добавление этой строки кода 'newRule.Tags = diagnostic.CustomTags .ToArray (?);' в методе SonarQube.Plugins.Roslyn.RuleGenerator.GetAnalyzerRules и восстановления локально, работал отлично –
@ MarcoFranzé не было известно, что пользовательские теги игнорируются, поэтому обновляйте ответ, если вы хотите принять его как правильный. – Godin
@ tamas-sonarsource-team вы могли бы взглянуть на это - это, по-видимому, обычная трудность в использовании SDK? – Godin