java.lang.IllegalStateException: Rule with key
'ConfigFilesPlugin:ConfigFiles-User-Check' not found
at com.google.common.base.Preconditions.checkState
(Preconditions.java:197)
at org.sonar.server.qualityprofile.BuiltInQProfileRepositoryImpl.
lambda$updateOrCreateBuilder$5(BuiltInQProfileRepositoryImpl.java:188)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at java.util.Collections$UnmodifiableCollection.forEach
(Collections.java:1080)
at org.sonar.server.qualityprofile.BuiltInQProfileRepositoryImpl
updateOrCreateBuilder(BuiltInQProfileRepositoryImpl.java:185)
at org.sonar.server.qualityprofile.BuiltInQProfileRepositoryImpl.
lambda$toQualityProfileBuilders$4(BuiltInQProfileRepositoryImpl.java:164)
at java.util.HashMap.compute(HashMap.java:1197)
at org.sonar.server.qualityprofile.BuiltInQProfileRepositoryImpl.
toQualityProfileBuilders(BuiltInQProfileRepositoryImpl.java:162)
at org.sonar.server.qualityprofile.BuiltInQProfileRepositoryImpl.
lambda$toFlatList$2(BuiltInQProfileRepositoryImpl.java:133)
at org.sonar.core.util.stream.MoreCollectors.
lambda$uniqueIndex$9(MoreCollectors.java:254)
at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
主要原因:
package com.lingtian.sonar.rules;
import org.sonar.api.server.rule.RulesDefinition;
import org.sonar.squidbridge.annotations.AnnotationBasedRulesDefinition;
import com.lingtian.sonar.check.CheckList;
import com.lingtian.sonar.plugin.ConfigFileScanPlugin;
public class ConfigFileScanRulesDefinition implements RulesDefinition{
@Override
public void define(Context context) {
NewRepository repository = context
.createRepository(ConfigFileScanPlugin.REPOSITORY_KEY, ConfigFileScanPlugin.LANGUAGE_KEY)
.setName(ConfigFileScanPlugin.REPOSITORY_NAME);
new AnnotationBasedRulesDefinition(repository, ConfigFileScanPlugin.LANGUAGE_KEY)
.addRuleClasses(false, CheckList.getChecks());
/*AnnotationBasedRulesDefinition.load(repository, ConfigFileScanPlugin.LANGUAGE_KEY,
CheckList.getChecks()); */
repository.done();
}
}
createRepository(reposKey, language.Key); repository.setName(reposName)
在加載的時候是按照reposkey 和languagekey 加載的。
獲取規則的時候也是根據reposKey 獲取的:
this.checks = ConfigFilesPluginChecks.createJavaPropertiesChecks(checkFactory)
.addChecks(ConfigFileScanPlugin.REPOSITORY_KEY, CheckList.getChecks());