编写sonar 插件 Rule with key 'xxxPlugin:xxxxx-key' not found

博客主要讲述了加载时按照reposkey和languagekey进行,获取规则是根据reposKey。代码示例包括createRepository函数按相关键加载,以及获取规则时使用ConfigFilesPluginChecks创建检查并添加检查项。
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());

2025-10-24 07:54:47.947 UTC [41] FATAL: database "sonar" does not exist sonarqube-server | 07:54:48.873 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties sonarqube-server | Exception in thread "main" org.sonar.process.MessageException: Bad format of JDBC URL: jdbc:sonarqube-db://postgres:5432/sonar sonarqube-server exited with code 0 sonarqube-server | 07:54:49.532 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties sonarqube-server | Exception in thread "main" org.sonar.process.MessageException: Bad format of JDBC URL: jdbc:sonarqube-db://postgres:5432/sonar sonarqube-server exited with code 1 sonarqube-server | 07:54:50.310 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties sonarqube-server | Exception in thread "main" org.sonar.process.MessageException: Bad format of JDBC URL: jdbc:sonarqube-db://postgres:5432/sonar sonarqube-server exited with code 1 sonarqube-server | 07:54:51.246 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties sonarqube-server | Exception in thread "main" org.sonar.process.MessageException: Bad format of JDBC URL: jdbc:sonarqube-db://postgres:5432/sonar sonarqube-server exited with code 1 sonarqube-server | 07:54:52.566 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties sonarqube-server | Exception in thread "main" org.sonar.process.MessageException: Bad format of JDBC URL: jdbc:sonarqube-db://postgres:5432/sonar sonarqube-server exited with code 1 sonarqube-db | 2025-10-24 07:54:53.020 UTC [49] FATAL: database "sonar" does not exist sonarqube-server | 07:54:54.696 [main] WARN org.sonar.application.config.AppSettingsLoaderImpl - Configuration file not found: /opt/sonarqube/conf/sonar.properties sonarqube-server | Exception in thread "main" org.sonar.process.MessageException: Bad format of JDBC URL: jdbc:sonarqube-db://postgres:5432/sonar
最新发布
10-25
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值