]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-13588 External issue tags should inherit external rule tags
authorPierre <pierre.guillot@sonarsource.com>
Fri, 25 Feb 2022 13:40:37 +0000 (14:40 +0100)
committersonartech <sonartech@sonarsource.com>
Fri, 25 Feb 2022 20:02:54 +0000 (20:02 +0000)
plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/rule/XooRulesDefinition.java
server/sonar-ce-task-projectanalysis/src/main/java/org/sonar/ce/task/projectanalysis/issue/RuleTagsCopier.java
server/sonar-ce-task-projectanalysis/src/test/java/org/sonar/ce/task/projectanalysis/issue/RuleTagsCopierTest.java

index 7692f38f393f9e7fe8d4e8df2127352201fd8ddd..11c01bde6904298f9e11cd46b8e0fcdae6796a07 100644 (file)
@@ -225,7 +225,8 @@ public class XooRulesDefinition implements RulesDefinition {
       .setType(OnePredefinedRuleExternalIssuePerLineSensor.TYPE)
       .setScope(RuleScope.ALL)
       .setHtmlDescription("Generates one external issue in each line")
-      .setName("One external issue per line");
+      .setName("One external issue per line")
+      .setTags("riri", "fifi", "loulou");
 
     repo.done();
   }
index f48110bb5ae188fec5a660f7e2622bdcfd6c8d1a..ad98507da26dfe6a0365ce2270f602f458f32406 100644 (file)
@@ -37,9 +37,7 @@ public class RuleTagsCopier extends IssueVisitor {
     if (issue.isNew()) {
       // analyzer can provide some tags. They must be merged with rule tags
       Rule rule = ruleRepository.getByKey(issue.ruleKey());
-      if (!rule.isExternal()) {
-        issue.setTags(union(issue.tags(), rule.getTags()));
-      }
+      issue.setTags(union(issue.tags(), rule.getTags()));
     }
   }
 }
index 51a5773d3a6d53236a63eb0a88241c6290926c0a..f6465fdea37f1580c76705567aaedefc15c2f45f 100644 (file)
@@ -29,15 +29,18 @@ import static java.util.Arrays.asList;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.sonar.db.rule.RuleTesting.XOO_X1;
+import static org.sonar.db.rule.RuleTesting.XOO_X2;
 
 public class RuleTagsCopierTest {
 
   DumbRule rule = new DumbRule(XOO_X1);
+  DumbRule externalRule = new DumbRule(XOO_X2).setIsExternal(true);
 
   @org.junit.Rule
-  public RuleRepositoryRule ruleRepository = new RuleRepositoryRule().add(rule);
+  public RuleRepositoryRule ruleRepository = new RuleRepositoryRule().add(rule).add(externalRule);
 
   DefaultIssue issue = new DefaultIssue().setRuleKey(rule.getKey());
+  DefaultIssue externalIssue = new DefaultIssue().setRuleKey(externalRule.getKey());
   RuleTagsCopier underTest = new RuleTagsCopier(ruleRepository);
 
   @Test
@@ -50,6 +53,16 @@ public class RuleTagsCopierTest {
     assertThat(issue.tags()).containsExactly("bug", "performance");
   }
 
+  @Test
+  public void copy_tags_if_new_external_issue() {
+    externalRule.setTags(Sets.newHashSet("es_lint", "java"));
+    externalIssue.setNew(true);
+
+    underTest.onIssue(mock(Component.class), externalIssue);
+
+    assertThat(externalIssue.tags()).containsExactly("es_lint", "java");
+  }
+
   @Test
   public void do_not_copy_tags_if_existing_issue() {
     rule.setTags(Sets.newHashSet("bug", "performance"));