diff options
author | simonbrandhof <simon.brandhof@gmail.com> | 2010-10-08 15:48:07 +0000 |
---|---|---|
committer | simonbrandhof <simon.brandhof@gmail.com> | 2010-10-08 15:48:07 +0000 |
commit | fc24fe199eb5968ab7adb26fd23f650e4a8f8a9e (patch) | |
tree | 59332c8e45a7b6184cc602756c6c193898e62d94 /plugins/sonar-pmd-plugin | |
parent | 7ca495d67492c6b3dbb653102e345f8fc43f09ae (diff) | |
download | sonarqube-fc24fe199eb5968ab7adb26fd23f650e4a8f8a9e.tar.gz sonarqube-fc24fe199eb5968ab7adb26fd23f650e4a8f8a9e.zip |
API: apply the same pattern between rules and profiles API. The extension point to define rules is org.sonar.api.rules.RuleRepository. The classes AnnotationRuleParser and XMLRuleParser are components that can be used but not extended.
Diffstat (limited to 'plugins/sonar-pmd-plugin')
3 files changed, 11 insertions, 11 deletions
diff --git a/plugins/sonar-pmd-plugin/src/main/java/org/sonar/plugins/pmd/PmdRuleRepository.java b/plugins/sonar-pmd-plugin/src/main/java/org/sonar/plugins/pmd/PmdRuleRepository.java index 19214409b08..04fe1fdfe76 100644 --- a/plugins/sonar-pmd-plugin/src/main/java/org/sonar/plugins/pmd/PmdRuleRepository.java +++ b/plugins/sonar-pmd-plugin/src/main/java/org/sonar/plugins/pmd/PmdRuleRepository.java @@ -19,6 +19,7 @@ */ package org.sonar.plugins.pmd; +import com.google.common.collect.Lists; import org.sonar.api.platform.ServerFileSystem; import org.sonar.api.resources.Java; import org.sonar.api.rules.Rule; @@ -26,26 +27,27 @@ import org.sonar.api.rules.RuleRepository; import org.sonar.api.rules.XMLRuleParser; import java.io.File; -import java.util.ArrayList; import java.util.List; public final class PmdRuleRepository extends RuleRepository { // for user extensions private ServerFileSystem fileSystem; + private XMLRuleParser xmlRuleParser; - public PmdRuleRepository(ServerFileSystem fileSystem) { + public PmdRuleRepository(ServerFileSystem fileSystem, XMLRuleParser xmlRuleParser) { super(PmdConstants.REPOSITORY_KEY, Java.KEY); setName(PmdConstants.REPOSITORY_NAME); this.fileSystem = fileSystem; + this.xmlRuleParser = xmlRuleParser; } @Override public List<Rule> createRules() { - List<Rule> rules = new ArrayList<Rule>(); - rules.addAll(XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/plugins/pmd/rules.xml"))); + List<Rule> rules = Lists.newArrayList(); + rules.addAll(xmlRuleParser.parse(getClass().getResourceAsStream("/org/sonar/plugins/pmd/rules.xml"))); for (File userExtensionXml : fileSystem.getExtensions(PmdConstants.REPOSITORY_KEY, "xml")) { - rules.addAll(XMLRuleParser.parseXML(userExtensionXml)); + rules.addAll(xmlRuleParser.parse(userExtensionXml)); } return rules; } diff --git a/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdProfileExporterTest.java b/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdProfileExporterTest.java index d6189e13196..438bb9d3c4d 100644 --- a/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdProfileExporterTest.java +++ b/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdProfileExporterTest.java @@ -17,10 +17,7 @@ import org.apache.commons.lang.StringUtils; import org.junit.Test; import org.sonar.api.platform.ServerFileSystem; import org.sonar.api.profiles.RulesProfile; -import org.sonar.api.rules.ActiveRule; -import org.sonar.api.rules.Rule; -import org.sonar.api.rules.RuleFinder; -import org.sonar.api.rules.RuleQuery; +import org.sonar.api.rules.*; import org.sonar.api.utils.ValidationMessages; import org.sonar.plugins.pmd.xml.PmdProperty; import org.sonar.plugins.pmd.xml.PmdRule; @@ -34,7 +31,7 @@ public class PmdProfileExporterTest { @Test public void testExportProfile() throws IOException, SAXException { ServerFileSystem fileSystem = mock(ServerFileSystem.class); - PmdRuleRepository repository = new PmdRuleRepository(fileSystem); + PmdRuleRepository repository = new PmdRuleRepository(fileSystem, new XMLRuleParser()); List<Rule> rules = repository.createRules(); RuleFinder ruleFinder = new PmdRuleFinder(rules); diff --git a/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdRuleRepositoryTest.java b/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdRuleRepositoryTest.java index ac55ffc35f9..d726c28564e 100644 --- a/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdRuleRepositoryTest.java +++ b/plugins/sonar-pmd-plugin/src/test/java/org/sonar/plugins/pmd/PmdRuleRepositoryTest.java @@ -28,13 +28,14 @@ import java.util.List; import org.junit.Test; import org.sonar.api.platform.ServerFileSystem; import org.sonar.api.rules.Rule; +import org.sonar.api.rules.XMLRuleParser; public class PmdRuleRepositoryTest { @Test public void testLoadRepositoryFromXml() { ServerFileSystem fileSystem = mock(ServerFileSystem.class); - PmdRuleRepository repository = new PmdRuleRepository(fileSystem); + PmdRuleRepository repository = new PmdRuleRepository(fileSystem, new XMLRuleParser()); List<Rule> rules = repository.createRules(); assertThat(rules.size(), greaterThan(100)); } |