編寫sonar 插件 Rule with key 'xxxPlugin:xxxxx-key' not found

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());

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章