]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-19050 Update xoo-plugin : use new rule characteristics in some issues
authorBenjamin Campomenosi <109955405+benjamin-campomenosi-sonarsource@users.noreply.github.com>
Fri, 21 Apr 2023 10:17:10 +0000 (12:17 +0200)
committersonartech <sonartech@sonarsource.com>
Mon, 24 Apr 2023 20:04:24 +0000 (20:04 +0000)
plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/rule/XooRulesDefinition.java
plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/rule/XooRulesDefinitionTest.java

index c818dadcbc92e2bb21e689e06bfeb52c0c9790fa..058a81544141be9c9d1a1f89aa33a9b0f174ca07 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.xoo.rule;
 import javax.annotation.Nullable;
 import org.sonar.api.SonarRuntime;
 import org.sonar.api.rule.RuleScope;
+import org.sonar.api.rules.RuleCharacteristic;
 import org.sonar.api.rules.RuleType;
 import org.sonar.api.server.rule.RuleDescriptionSection;
 import org.sonar.api.server.rule.RuleParamType;
@@ -145,7 +146,7 @@ public class XooRulesDefinition implements RulesDefinition {
 
     NewRule oneBugIssuePerTestLine = repo.createRule(OneBugIssuePerTestLineSensor.RULE_KEY).setName("One Bug Issue Per Test Line")
       .setScope(RuleScope.TEST)
-      .setType(RuleType.BUG);
+      .setType(RuleType.BUG).setCharacteristic(RuleCharacteristic.COMPLIANT);
     addAllDescriptionSections(oneBugIssuePerTestLine, "Generate a bug issue on each line of a test file. It requires the metric \"lines\".");
 
     oneBugIssuePerTestLine
@@ -188,10 +189,10 @@ public class XooRulesDefinition implements RulesDefinition {
 
     NewRule hotspotWithRangeAndMultipleLocations = repo.createRule(MultilineHotspotSensor.RULE_KEY)
       .setName("Creates hotspots with ranges/multiple locations")
-      .setType(RuleType.SECURITY_HOTSPOT);
+      .setType(RuleType.SECURITY_HOTSPOT)
+      .setCharacteristic(RuleCharacteristic.PORTABLE);
     addAllDescriptionSections(hotspotWithRangeAndMultipleLocations, "Hotspot with range and multiple locations");
 
-
     NewRule issueOnEachFileWithExtUnknown = repo.createRule(OneIssuePerUnknownFileSensor.RULE_KEY).setName("Creates issues on each file with extension 'unknown'");
     addAllDescriptionSections(issueOnEachFileWithExtUnknown, "This issue is generated on each file with extenstion 'unknown'");
 
@@ -202,13 +203,14 @@ public class XooRulesDefinition implements RulesDefinition {
     addAllDescriptionSections(oneBugIssuePerLine, "Generate a bug issue on each line of a file. It requires the metric \"lines\".");
 
     NewRule oneCodeSmellIssuePerLine = repo.createRule(OneCodeSmellIssuePerLineSensor.RULE_KEY).setName("One Code Smell Issue Per Line")
-      .setType(RuleType.CODE_SMELL);
+      .setType(RuleType.CODE_SMELL)
+      .setCharacteristic(RuleCharacteristic.STRUCTURED);
     oneCodeSmellIssuePerLine
       .setDebtRemediationFunction(oneCodeSmellIssuePerLine.debtRemediationFunctions().linear("9min"));
     addAllDescriptionSections(oneCodeSmellIssuePerLine, "Generate a code smell issue on each line of a file. It requires the metric \"lines\".");
 
     NewRule oneVulnerabilityIssuePerModule = repo.createRule(OneVulnerabilityIssuePerModuleSensor.RULE_KEY).setName("One Vulnerability Issue Per Module")
-      .setType(RuleType.VULNERABILITY);
+      .setType(RuleType.VULNERABILITY).setCharacteristic(RuleCharacteristic.ROBUST);
     addAllDescriptionSections(oneVulnerabilityIssuePerModule, "Generate an issue on each module");
 
     oneVulnerabilityIssuePerModule
@@ -274,6 +276,7 @@ public class XooRulesDefinition implements RulesDefinition {
     NewRule hotspotWithSingleContext = repo.createRule(HotspotWithSingleContextSensor.RULE_KEY)
       .setName("Find security hotspots, how_to_fix with single context")
       .setType(RuleType.SECURITY_HOTSPOT)
+      .setCharacteristic(RuleCharacteristic.SECURE)
       .setActivatedByDefault(false)
       .addDescriptionSection(howToFixSectionWithContext("single_context"));
     addDescriptionSectionsWithoutContexts(hotspotWithSingleContext, "Search for Security Hotspots with single context in Xoo files");
index 8d3ece2a71cc0341af189c9f910796ceb7eee984..d851fb4f26fcc306aca7717da0a3c636dcec1a6c 100644 (file)
@@ -25,6 +25,7 @@ import org.sonar.api.SonarEdition;
 import org.sonar.api.SonarQubeSide;
 import org.sonar.api.impl.server.RulesDefinitionContext;
 import org.sonar.api.internal.SonarRuntimeImpl;
+import org.sonar.api.rules.RuleCharacteristic;
 import org.sonar.api.server.debt.DebtRemediationFunction;
 import org.sonar.api.server.rule.RulesDefinition;
 import org.sonar.api.utils.Version;
@@ -55,6 +56,7 @@ public class XooRulesDefinitionTest {
     assertThat(rule.debtRemediationFunction().gapMultiplier()).isEqualTo("1min");
     assertThat(rule.debtRemediationFunction().baseEffort()).isNull();
     assertThat(rule.gapDescription()).isNotEmpty();
+    assertThat(rule.characteristic()).isNull();
     assertThat(rule.ruleDescriptionSections()).isNotEmpty();
     assertThat(rule.ruleDescriptionSections().stream().anyMatch(rds -> rds.getContext().isPresent())).isTrue();
   }
@@ -114,6 +116,13 @@ public class XooRulesDefinitionTest {
     assertThat(repo.rules()).hasSize(2);
   }
 
+  @Test
+  public void define_xoo_rule_with_characteristic() {
+    RulesDefinition.Repository repo = context.repository("xoo");
+    RulesDefinition.Rule oneCodeSmellIssuePerLine = repo.rule("OneCodeSmellIssuePerLine");
+    assertThat(oneCodeSmellIssuePerLine.characteristic()).isEqualTo(RuleCharacteristic.STRUCTURED);
+  }
+
   private RulesDefinition.Repository getRepository() {
     RulesDefinition.Repository repo = context.repository("xoo");
     assertThat(repo).isNotNull();