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 | |
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.
13 files changed, 58 insertions, 70 deletions
diff --git a/plugins/sonar-checkstyle-plugin/src/main/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepository.java b/plugins/sonar-checkstyle-plugin/src/main/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepository.java index ee533a1cffa..02dd0ad885c 100644 --- a/plugins/sonar-checkstyle-plugin/src/main/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepository.java +++ b/plugins/sonar-checkstyle-plugin/src/main/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepository.java @@ -33,19 +33,21 @@ public final class CheckstyleRuleRepository extends RuleRepository { // for user extensions private ServerFileSystem fileSystem; + private XMLRuleParser xmlRuleParser; - public CheckstyleRuleRepository(ServerFileSystem fileSystem) { + public CheckstyleRuleRepository(ServerFileSystem fileSystem, XMLRuleParser xmlRuleParser) { super(CheckstyleConstants.REPOSITORY_KEY, Java.KEY); setName(CheckstyleConstants.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/checkstyle/rules.xml"))); + rules.addAll(xmlRuleParser.parse(getClass().getResourceAsStream("/org/sonar/plugins/checkstyle/rules.xml"))); for (File userExtensionXml : fileSystem.getExtensions(CheckstyleConstants.REPOSITORY_KEY, "xml")) { - rules.addAll(XMLRuleParser.parseXML(userExtensionXml)); + rules.addAll(xmlRuleParser.parse(userExtensionXml)); } return rules; } diff --git a/plugins/sonar-checkstyle-plugin/src/test/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepositoryTest.java b/plugins/sonar-checkstyle-plugin/src/test/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepositoryTest.java index 71d29f5c572..a501feb7308 100644 --- a/plugins/sonar-checkstyle-plugin/src/test/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepositoryTest.java +++ b/plugins/sonar-checkstyle-plugin/src/test/java/org/sonar/plugins/checkstyle/CheckstyleRuleRepositoryTest.java @@ -22,6 +22,7 @@ package org.sonar.plugins.checkstyle; import org.junit.Test; import org.sonar.api.platform.ServerFileSystem; import org.sonar.api.rules.Rule; +import org.sonar.api.rules.XMLRuleParser; import java.util.List; @@ -34,7 +35,7 @@ public class CheckstyleRuleRepositoryTest { @Test public void loadRepositoryFromXml() { ServerFileSystem fileSystem = mock(ServerFileSystem.class); - CheckstyleRuleRepository repository = new CheckstyleRuleRepository(fileSystem); + CheckstyleRuleRepository repository = new CheckstyleRuleRepository(fileSystem, new XMLRuleParser()); List<Rule> rules = repository.createRules(); assertThat(rules.size(), greaterThan(100)); } diff --git a/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsRuleRepository.java b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsRuleRepository.java index 0f43b2cd4d2..38150ecead9 100644 --- a/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsRuleRepository.java +++ b/plugins/sonar-findbugs-plugin/src/main/java/org/sonar/plugins/findbugs/FindbugsRuleRepository.java @@ -28,13 +28,16 @@ import java.util.List; public final class FindbugsRuleRepository extends RuleRepository { - public FindbugsRuleRepository() { + private XMLRuleParser xmlRuleParser; + + public FindbugsRuleRepository(XMLRuleParser xmlRuleParser) { super(FindbugsConstants.REPOSITORY_KEY, Java.KEY); setName(FindbugsConstants.REPOSITORY_NAME); + this.xmlRuleParser = xmlRuleParser; } @Override public List<Rule> createRules() { - return XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/plugins/findbugs/rules.xml")); + return xmlRuleParser.parse(getClass().getResourceAsStream("/org/sonar/plugins/findbugs/rules.xml")); } } diff --git a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleFinder.java b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleFinder.java index 44c279b4f6e..ab3af9d93a6 100644 --- a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleFinder.java +++ b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleFinder.java @@ -25,13 +25,14 @@ import java.util.List; import org.sonar.api.rules.Rule; import org.sonar.api.rules.RuleFinder; import org.sonar.api.rules.RuleQuery; +import org.sonar.api.rules.XMLRuleParser; public class FindbugsRuleFinder implements RuleFinder { private final List<Rule> findbugsRules; public FindbugsRuleFinder() { - FindbugsRuleRepository repo = new FindbugsRuleRepository(); + FindbugsRuleRepository repo = new FindbugsRuleRepository(new XMLRuleParser()); findbugsRules = repo.createRules(); for(Rule rule : findbugsRules){ rule.setRepositoryKey(FindbugsConstants.REPOSITORY_KEY); diff --git a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleRepositoryTest.java b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleRepositoryTest.java index d8c9ff8a32c..511232b7a6d 100644 --- a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleRepositoryTest.java +++ b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsRuleRepositoryTest.java @@ -27,12 +27,13 @@ import java.util.List; import org.junit.Test; import org.sonar.api.rules.Rule; +import org.sonar.api.rules.XMLRuleParser; public class FindbugsRuleRepositoryTest { @Test public void testLoadRepositoryFromXml() { - FindbugsRuleRepository repository = new FindbugsRuleRepository(); + FindbugsRuleRepository repository = new FindbugsRuleRepository(new XMLRuleParser()); List<Rule> rules = repository.createRules(); assertThat(rules.size(), greaterThan(300)); for (Rule rule : rules) { diff --git a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsTests.java b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsTests.java index e051e7c52a7..f805a005459 100644 --- a/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsTests.java +++ b/plugins/sonar-findbugs-plugin/src/test/java/org/sonar/plugins/findbugs/FindbugsTests.java @@ -35,11 +35,7 @@ import org.mockito.stubbing.Answer; import org.sonar.api.CoreProperties;
import org.sonar.api.profiles.RulesProfile;
import org.sonar.api.resources.Java;
-import org.sonar.api.rules.ActiveRule;
-import org.sonar.api.rules.Rule;
-import org.sonar.api.rules.RulePriority;
-import org.sonar.api.rules.RuleQuery;
-import org.sonar.api.rules.RulesManager;
+import org.sonar.api.rules.*;
import org.sonar.test.TestUtils;
import org.xml.sax.SAXException;
@@ -93,7 +89,7 @@ public abstract class FindbugsTests { RulesProfile profile = RulesProfile.create();
profile.setName(RulesProfile.SONAR_WAY_FINDBUGS_NAME);
profile.setLanguage(Java.KEY);
- for (Rule rule : new FindbugsRuleRepository().createRules()) {
+ for (Rule rule : new FindbugsRuleRepository(new XMLRuleParser()).createRules()) {
rule.setRepositoryKey(FindbugsConstants.REPOSITORY_KEY);
profile.activateRule(rule, null);
}
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)); } diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleRepository.java b/sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleParser.java index ed8292a89ce..28c7679a5ce 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleRepository.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/rules/AnnotationRuleParser.java @@ -23,6 +23,7 @@ import com.google.common.collect.Lists; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.sonar.api.ServerComponent; import org.sonar.api.utils.AnnotationUtils; import org.sonar.check.Check; @@ -33,50 +34,34 @@ import java.util.List; /** * @since 2.3 */ -public final class AnnotationRuleRepository extends RuleRepository { +public final class AnnotationRuleParser implements ServerComponent { - private static final Logger LOG = LoggerFactory.getLogger(AnnotationRuleRepository.class); + private static final Logger LOG = LoggerFactory.getLogger(AnnotationRuleParser.class); - private Collection<Class> annotatedClasses; - - /** - * Use the factory method create() - */ - private AnnotationRuleRepository(String key, String language, String name, Collection<Class> annotatedClasses) { - super(key, language); - setName(name); - this.annotatedClasses = annotatedClasses; - } - - public static AnnotationRuleRepository create(String key, String language, String name, Collection<Class> annotatedClasses) { - return new AnnotationRuleRepository(key, language, name, annotatedClasses); - } - - @Override - public List<Rule> createRules() { + public List<Rule> parse(String repositoryKey, Collection<Class> annotatedClasses) { List<Rule> rules = Lists.newArrayList(); for (Class annotatedClass : annotatedClasses) { - rules.add(create(annotatedClass)); + rules.add(create(repositoryKey, annotatedClass)); } return rules; } - private Rule create(Class annotatedClass) { + private Rule create(String repositoryKey, Class annotatedClass) { org.sonar.check.Rule ruleAnnotation = AnnotationUtils.getClassAnnotation(annotatedClass, org.sonar.check.Rule.class); if (ruleAnnotation != null) { - return toRule(annotatedClass, ruleAnnotation); + return toRule(repositoryKey, annotatedClass, ruleAnnotation); } Check checkAnnotation = AnnotationUtils.getClassAnnotation(annotatedClass, Check.class); if (checkAnnotation != null) { - return toRule(annotatedClass, checkAnnotation); + return toRule(repositoryKey, annotatedClass, checkAnnotation); } - LOG.warn("The class " + annotatedClass.getCanonicalName() + " is not a check template. It should be annotated with " + Rule.class); + LOG.warn("The class " + annotatedClass.getCanonicalName() + " should be annotated with " + Rule.class); return null; } - private Rule toRule(Class clazz, org.sonar.check.Rule ruleAnnotation) { - String key = StringUtils.defaultIfEmpty(ruleAnnotation.key(), clazz.getCanonicalName()); - Rule rule = Rule.create(getKey(), key, ruleAnnotation.name()); + private Rule toRule(String repositoryKey, Class clazz, org.sonar.check.Rule ruleAnnotation) { + String ruleKey = StringUtils.defaultIfEmpty(ruleAnnotation.key(), clazz.getCanonicalName()); + Rule rule = Rule.create(repositoryKey, ruleKey, ruleAnnotation.name()); rule.setDescription(ruleAnnotation.description()); rule.setRulesCategory(RulesCategory.fromIsoCategory(ruleAnnotation.isoCategory())); rule.setPriority(RulePriority.fromCheckPriority(ruleAnnotation.priority())); @@ -91,9 +76,9 @@ public final class AnnotationRuleRepository extends RuleRepository { return rule; } - private Rule toRule(Class clazz, Check checkAnnotation) { - String key = StringUtils.defaultIfEmpty(checkAnnotation.key(), clazz.getCanonicalName()); - Rule rule = Rule.create(getKey(), key, checkAnnotation.title()); + private Rule toRule(String repositoryKey, Class clazz, Check checkAnnotation) { + String ruleKey = StringUtils.defaultIfEmpty(checkAnnotation.key(), clazz.getCanonicalName()); + Rule rule = Rule.create(repositoryKey, ruleKey, checkAnnotation.title()); rule.setDescription(checkAnnotation.description()); rule.setRulesCategory(RulesCategory.fromIsoCategory(checkAnnotation.isoCategory())); rule.setPriority(RulePriority.fromCheckPriority(checkAnnotation.priority())); diff --git a/sonar-plugin-api/src/main/java/org/sonar/api/rules/XMLRuleParser.java b/sonar-plugin-api/src/main/java/org/sonar/api/rules/XMLRuleParser.java index 4537da54b27..60090731ca2 100644 --- a/sonar-plugin-api/src/main/java/org/sonar/api/rules/XMLRuleParser.java +++ b/sonar-plugin-api/src/main/java/org/sonar/api/rules/XMLRuleParser.java @@ -27,6 +27,7 @@ import org.codehaus.stax2.XMLInputFactory2; import org.codehaus.staxmate.SMInputFactory; import org.codehaus.staxmate.in.SMHierarchicCursor; import org.codehaus.staxmate.in.SMInputCursor; +import org.sonar.api.ServerComponent; import org.sonar.api.utils.SonarException; import javax.xml.stream.XMLInputFactory; @@ -38,17 +39,13 @@ import java.util.List; /** * @since 2.3 */ -public final class XMLRuleParser { +public final class XMLRuleParser implements ServerComponent { - private XMLRuleParser() { - // only static methods - } - - public static List<Rule> parseXML(File file) { + public List<Rule> parse(File file) { Reader reader = null; try { reader = new InputStreamReader(FileUtils.openInputStream(file), CharEncoding.UTF_8); - return parseXML(reader); + return parse(reader); } catch (IOException e) { throw new SonarException("Fail to load the file: " + file, e); @@ -61,11 +58,11 @@ public final class XMLRuleParser { /** * Warning : the input stream is closed in this method */ - public static List<Rule> parseXML(InputStream input) { + public List<Rule> parse(InputStream input) { Reader reader = null; try { reader = new InputStreamReader(input, CharEncoding.UTF_8); - return parseXML(reader); + return parse(reader); } catch (IOException e) { throw new SonarException("Fail to load the xml stream", e); @@ -75,7 +72,7 @@ public final class XMLRuleParser { } } - public static List<Rule> parseXML(Reader reader) { + public List<Rule> parse(Reader reader) { XMLInputFactory xmlFactory = XMLInputFactory2.newInstance(); xmlFactory.setProperty(XMLInputFactory.IS_COALESCING, Boolean.TRUE); xmlFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.FALSE); diff --git a/sonar-plugin-api/src/test/java/org/sonar/api/rules/XMLRuleParserTest.java b/sonar-plugin-api/src/test/java/org/sonar/api/rules/XMLRuleParserTest.java index 73f41a460e3..ebe150ff997 100644 --- a/sonar-plugin-api/src/test/java/org/sonar/api/rules/XMLRuleParserTest.java +++ b/sonar-plugin-api/src/test/java/org/sonar/api/rules/XMLRuleParserTest.java @@ -35,7 +35,7 @@ public class XMLRuleParserTest { @Test public void parseXml() { - List<Rule> rules = XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/rules.xml")); + List<Rule> rules = new XMLRuleParser().parse(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/rules.xml")); assertThat(rules.size(), is(2)); Rule rule = rules.get(0); @@ -59,17 +59,17 @@ public class XMLRuleParserTest { @Test(expected = SonarException.class) public void failIfMissingRuleKey() { - XMLRuleParser.parseXML(new StringReader("<rules><rule><name>Foo</name></rule></rules>")); + new XMLRuleParser().parse(new StringReader("<rules><rule><name>Foo</name></rule></rules>")); } @Test(expected = SonarException.class) public void failIfMissingPropertyKey() { - XMLRuleParser.parseXML(new StringReader("<rules><rule><key>foo</key><name>Foo</name><param></param></rule></rules>")); + new XMLRuleParser().parse(new StringReader("<rules><rule><key>foo</key><name>Foo</name><param></param></rule></rules>")); } @Test public void utf8Encoding() { - List<Rule> rules = XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/utf8.xml")); + List<Rule> rules = new XMLRuleParser().parse(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/utf8.xml")); assertThat(rules.size(), is(1)); Rule rule = rules.get(0); assertThat(rule.getKey(), is("com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck")); @@ -82,7 +82,7 @@ public class XMLRuleParserTest { @Test public void supportDeprecatedFormat() { // the deprecated format uses some attributes instead of nodes - List<Rule> rules = XMLRuleParser.parseXML(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/deprecated.xml")); + List<Rule> rules = new XMLRuleParser().parse(getClass().getResourceAsStream("/org/sonar/api/rules/XMLRuleParserTest/deprecated.xml")); assertThat(rules.size(), is(1)); Rule rule = rules.get(0); assertThat(rule.getPriority(), Is.is(RulePriority.CRITICAL)); diff --git a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java index 48c321c0c02..cfbcda01422 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java @@ -33,6 +33,7 @@ import org.sonar.api.profiles.XMLProfileParser; import org.sonar.api.profiles.XMLProfileSerializer; import org.sonar.api.resources.Languages; import org.sonar.api.rules.DefaultRulesManager; +import org.sonar.api.rules.XMLRuleParser; import org.sonar.api.utils.HttpDownloader; import org.sonar.api.utils.IocContainer; import org.sonar.api.utils.TimeProfiler; @@ -175,6 +176,7 @@ public final class Platform { servicesContainer.as(Characteristics.CACHE).addComponent(AnnotationProfileParser.class); servicesContainer.as(Characteristics.CACHE).addComponent(XMLProfileParser.class); servicesContainer.as(Characteristics.CACHE).addComponent(XMLProfileSerializer.class); + servicesContainer.as(Characteristics.CACHE).addComponent(XMLRuleParser.class); servicesContainer.as(Characteristics.CACHE).addComponent(DefaultRuleFinder.class); servicesContainer.as(Characteristics.CACHE).addComponent(DeprecatedRuleRepositories.class); servicesContainer.as(Characteristics.CACHE).addComponent(DeprecatedProfiles.class); |