2016-11-16 3 views
2

Je tente de créer une règle SonarQube personnalisée dans VisualStudio 2015, à l'aide du générateur Roslyn SDK.Les règles SonarQube personnalisées générées avec Roslyn SDK Generator ont toujours un type de problème "Code Smell"

Le générateur fonctionne correctement et je suis capable de publier le fichier .jar sur le serveur SonarQube et d'utiliser ma règle personnalisée dans les versions quotidiennes. Maintenant, je voudrais catégoriser la règle comme "vulnérabilité", mais elle apparaît toujours comme "odeur de code".

J'ai essayé deux approches:

  1. Changé la « catégorie » de la classe DiagnosticDescriptor « Sécurité »

    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. Changé le modèle XML fourni par le générateur et régénérés la plugin utilisant le nouveau xml (j'ai essayé "SECURITY" et "SECURITY_COMPLIANCE" à la place du généré "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> 
    

Rien n'a fonctionné jusqu'à présent.

J'utilise la configuration suivante:

  • VS2015 Mise à jour 3
  • sonarqube v 6.1
  • SonarLint v 2.8
  • analyseur personnalisé C# développé avec SonarQube.Roslyn.SDK c... 1,0

Répondre

1

Malheureusement, il semble que la possibilité de définir explicitement la catégorie n'est pas encore implémentée - voir https://jira.sonarsource.com/browse/SFSRAP-48

Pour contourner ce problème, vous pouvez ajouter un tag security à une règle et la règle sera catégorisé comme Vulnerabilty grâce à automatic conversion of tag into category in SonarQube. Cependant, il semble que SonarQube.Plugins.Roslyn.RuleGenerator ne considère pas la propriété CustomTags lors de la construction de la règle SonarQube, mais l'ajout de newRule.Tags = diagnostic.CustomTags?.ToArray(); à la méthode SonarQube.Plugins.Roslyn.RuleGenerator.GetAnalyzerRules et la reconstruction de sonarqube-roslyn-sdk feront l'affaire.

+0

Nous vous remercions de votre suggestion. J'ai essayé d'ajouter une balise personnalisée 'security', mais il semble que le générateur de plugins ignore la balise personnalisée lors de la génération du plugin SonarQube. En vérifiant l'implémentation actuelle dans SonarQube.Roslyn.SDK v. 1.0, j'ai effectivement trouvé que la classe SonarQube.Plugins.Roslyn.RuleGenerator ne considère pas la propriété CustomTags lors de la construction de la règle SonarQube. L'ajout de cette ligne de code 'newRule.Tags = diagnostic.CustomTags .ToArray();' dans la méthode SonarQube.Plugins.Roslyn.RuleGenerator.GetAnalyzerRules et la reconstruction au niveau local, a parfaitement fonctionné –

+0

@ MarcoFranzé ne savait pas que des balises personnalisées sont ignorés, donc mis à jour une réponse au cas où vous voulez l'accepter comme un bon. – Godin

+0

@ tamas-sonarsource-team pourriez-vous jeter un coup d'œil à ceci - cela semble être une difficulté courante dans l'utilisation du SDK? – Godin