sonar 自定义一种语言报错:

2019.05.03 04:00:50 WARN web[][o.s.s.q.BuiltInQProfileDefinitionsBridge] Rule not found:[repository=configFiles, key=ConfigFiles-User-Check]
2019.05.03 04:00:50 INFO web[][o.s.s.q.BuiltInQProfileRepositoryImpl] Language
configFiles is not installed,related quality profiles are ignored
2019.05.03 04:00:50 ERROR web[][o.s.s.p.Platform] Background initialization failed.
Stopping SonarQube
java.lang.IllegalStateException: The following languages have no built-in quality
profiles: configfiles
at com.google.common.base.Preconditions.checkState(Preconditions.java:197)
at org.sonar.server.qualityprofile.BuiltInQProfileRepositoryImpl.
ensureAllLanguagesHaveAtLeastOneBuiltInQP
(BuiltInQProfileRepositoryImpl.java:100)
atorg.sonar.server.qualityprofile.BuiltInQProfileRepositoryImpl.initialize
(BuiltInQProfileRepositoryImpl.java:82) at org.sonar.server.qualityprofile.BuiltInQProfileLoader.start
(BuiltInQProfileLoader.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

新定义的语言:configfiles,必须实现BuiltInQualityProfilesDefinition扩展点;

ProfileDefinition is deprecated since 6.6, we should use BuiltInQualityProfilesDefinition

以列出默认情况下应为您的语言启用的规则。可以参考 https://github.com/SonarSource/sonar-custom-plugin-example

注意:BuiltInQualityProfilesDefinition 只有6.7以上版本才有的接口

package org.sonarsource.plugins.example.languages;import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition;import static org.sonarsource.plugins.example.rules.FooLintRulesDefinition.REPO_KEY;/*** Default, BuiltIn Quality Profile for the projects having files of the language "foo"*/
public final class FooQualityProfile implements BuiltInQualityProfilesDefinition {@Overridepublic void define(Context context) {NewBuiltInQualityProfile profile = context.createBuiltInQualityProfile("FooLint Rules", FooLanguage.KEY);profile.setDefault(true);NewBuiltInActiveRule rule1 = profile.activateRule(REPO_KEY, "ExampleRule1");rule1.overrideSeverity("BLOCKER");NewBuiltInActiveRule rule2 = profile.activateRule(REPO_KEY, "ExampleRule2");rule2.overrideSeverity("MAJOR");NewBuiltInActiveRule rule3 = profile.activateRule(REPO_KEY, "ExampleRule3");rule3.overrideSeverity("CRITICAL");profile.done();}
}

rules:

package org.sonarsource.plugins.example.rules;import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import org.sonar.api.server.rule.RulesDefinition;
import org.sonar.api.server.rule.RulesDefinitionXmlLoader;
import org.sonarsource.plugins.example.languages.FooLanguage;public final class FooLintRulesDefinition implements RulesDefinition {private static final String PATH_TO_RULES_XML = "/example/foolint-rules.xml";protected static final String KEY = "foolint";protected static final String NAME = "FooLint";public static final String REPO_KEY = FooLanguage.KEY + "-" + KEY;protected static final String REPO_NAME = FooLanguage.KEY + "-" + NAME;protected String rulesDefinitionFilePath() {return PATH_TO_RULES_XML;}private void defineRulesForLanguage(Context context, String repositoryKey, String repositoryName, String languageKey) {NewRepository repository = context.createRepository(repositoryKey, languageKey).setName(repositoryName);InputStream rulesXml = this.getClass().getResourceAsStream(rulesDefinitionFilePath());if (rulesXml != null) {RulesDefinitionXmlLoader rulesLoader = new RulesDefinitionXmlLoader();rulesLoader.load(repository, rulesXml, StandardCharsets.UTF_8.name());}repository.done();}@Overridepublic void define(Context context) {defineRulesForLanguage(context, REPO_KEY, REPO_NAME, FooLanguage.KEY);}}

对应rules.xml:

<foolint-rules><rule><key>ExampleRule1</key><name>Example Rule 1</name><internalKey>ExampleRule1</internalKey><description>This is an example of rule defined thru the XML.</description><severity>BLOCKER</severity><cardinality>SINGLE</cardinality><status>READY</status><type>BUG</type><tag>example</tag><remediationFunction>CONSTANT_ISSUE</remediationFunction><remediationFunctionBaseEffort>2min</remediationFunctionBaseEffort></rule><rule><key>ExampleRule2</key><name>Example Rule 2</name><internalKey>ExampleRule2</internalKey><description>This is a other example of rule defined thru the XML.</description><severity>MAJOR</severity><cardinality>SINGLE</cardinality><status>BETA</status><type>CODE_SMELL</type><tag>example</tag><tag>convention</tag><remediationFunction>LINEAR</remediationFunction><remediationFunctionGapMultiplier>60min</remediationFunctionGapMultiplier>        </rule><rule><key>ExampleRule3</key><name>Example Rule 3</name> <!-- max size is 200 --><internalKey>ExampleRule3</internalKey><description>This is a other example of rule defined thru the XML.</description><severity>CRITICAL</severity><cardinality>SINGLE</cardinality><status>DEPRECATED</status><type>VULNERABILITY</type><tag>example</tag><remediationFunction>LINEAR_OFFSET</remediationFunction><remediationFunctionGapMultiplier>10min</remediationFunctionGapMultiplier><remediationFunctionBaseEffort>30min</remediationFunctionBaseEffort>        </rule>
</foolint-rules>

plugin

package org.sonarsource.plugins.example;import org.sonar.api.Plugin;
import org.sonar.api.config.PropertyDefinition;
import org.sonarsource.plugins.example.hooks.DisplayIssuesInScanner;
import org.sonarsource.plugins.example.hooks.DisplayQualityGateStatus;
import org.sonarsource.plugins.example.languages.FooLanguage;
import org.sonarsource.plugins.example.languages.FooQualityProfile;
import org.sonarsource.plugins.example.measures.ComputeSizeAverage;
import org.sonarsource.plugins.example.measures.ComputeSizeRating;
import org.sonarsource.plugins.example.measures.ExampleMetrics;
import org.sonarsource.plugins.example.measures.SetSizeOnFilesSensor;
import org.sonarsource.plugins.example.rules.CreateIssuesOnJavaFilesSensor;
import org.sonarsource.plugins.example.rules.FooLintIssuesLoaderSensor;
import org.sonarsource.plugins.example.rules.FooLintRulesDefinition;
import org.sonarsource.plugins.example.rules.JavaRulesDefinition;
import org.sonarsource.plugins.example.settings.FooLanguageProperties;
import org.sonarsource.plugins.example.settings.HelloWorldProperties;
import org.sonarsource.plugins.example.settings.SayHelloFromScanner;
import org.sonarsource.plugins.example.web.MyPluginPageDefinition;import static java.util.Arrays.asList;/*** This class is the entry point for all extensions. It is referenced in pom.xml.*/
public class ExamplePlugin implements Plugin {@Overridepublic void define(Context context) {// tutorial on hooks// http://docs.sonarqube.org/display/DEV/Adding+Hookscontext.addExtensions(DisplayIssuesInScanner.class, DisplayQualityGateStatus.class);// tutorial on languagescontext.addExtensions(FooLanguage.class, FooQualityProfile.class);context.addExtension(FooLanguageProperties.getProperties());// tutorial on measurescontext.addExtensions(ExampleMetrics.class, SetSizeOnFilesSensor.class, ComputeSizeAverage.class, ComputeSizeRating.class);// tutorial on rulescontext.addExtensions(JavaRulesDefinition.class, CreateIssuesOnJavaFilesSensor.class);context.addExtensions(FooLintRulesDefinition.class, FooLintIssuesLoaderSensor.class);// tutorial on settingscontext.addExtensions(HelloWorldProperties.getProperties()).addExtension(SayHelloFromScanner.class);// tutorial on web extensionscontext.addExtension(MyPluginPageDefinition.class);context.addExtensions(asList(PropertyDefinition.builder("sonar.foo.file.suffixes").name("Suffixes FooLint").description("Suffixes supported by FooLint").category("FooLint").defaultValue("").build()));}
}

修改之后还是一直报:The following languages have no built-in quality profiles: configfiles

原因:LANGUAGE_KEY = "congfigFiles" 不是大写,只能是configfiles  巨坑!!!

编写sonar插件 The following languages have no built-in quality profiles:xxx相关推荐

  1. 编写sonar 插件:No SqaleSubCharacteristic annotation was found on class xxx

    报错信息: org.jruby.rack.RackInitializationException: java.lang.IllegalArgumentException:No SqaleSubChar ...

  2. Gradle 1.12用户指南翻译——第三十五章. Sonar 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  3. 使用Qt编写模块化插件式应用程序

    动态链接库技术使软件工程师们兽血沸腾,它使得应用系统(程序)可以以二进制模块的形式灵活地组建起来.比起源码级别的模块化,二进制级别的模块划分使得各模块更加独立,各模块可以分别编译和链接,模块的升级不会 ...

  4. skywalking原理_Skywalking系列博客6手把手教你编写 Skywalking 插件

    点击上方 IT牧场 ,选择 置顶或者星标技术干货每日送达! 前置知识 在正式进入编写环节之前,建议先花一点时间了解下javaagent(这是JDK 5引入的一个玩意儿,最好了解下其工作原理):另外,S ...

  5. 编写OD插件将IDA中分析出来的函数名导入到OD中

    逆向程序的时候,喜欢用IDA静态分析,用OD动态调试,如果把IDA分析出来的函数名称都导入到OD中,调试的时候就知道哪些函数不需要再看了.以前我一直用GODUP的map loader,但是有些时候感觉 ...

  6. 使用Lua编写whireshark插件

    whireshark支持Lua.C.C++编写的插件 在这里,我简单介绍如何使用Lua编写whireshark插件. 一.插件的存放位置 whireshark插件分为个人插件和全局插件,在window ...

  7. 自己编写jQuery插件之表单验证

    自己编写jQuery插件之表单验证 吐个嘈先:最近状态不咋滴,真是什么都不想干,不想上班,做什么都没动力,觉得没意思.不想这样,不想这样,快让这种情绪消失吧,忽忽.... 表单验证在项目中用的还是比较 ...

  8. 如何编写 Nagios 插件 (http://zener.blog.51cto.com/937811/727685)

    如何编写 Nagios 插件 Nagios 的最激动人心的方面是可以轻松地编写您自己的插件,只需要了解一些简单的指导原则即可.为了管理插件,Nagios 每次在查询一个服务的状态时,产生一个子进程,并 ...

  9. maven插件编写_编写Maven插件的提示

    maven插件编写 最近,我花了很多时间为Maven编写插件或在其中工作. 它们简单,有趣且有趣. 我以为我会分享一些技巧,使编写它们时的生活更轻松. 提示1:将任务与Mojo分开 最初,您将把moj ...

最新文章

  1. 51nod 最长公共子序列测试 【LCS+回溯】
  2. Gartner:解开关于人工智能的六个迷思
  3. 强大的DataGrid组件[1]【转】
  4. 从零开始-android 4.2之旅
  5. jupter中没有显示conda中的环境
  6. Window捕获消息机制-C#
  7. 甩开镣铐的精神舞蹈:推荐长篇小说《炼狱之花》
  8. arguments使用
  9. 字节3-1前端面试官自学Vue的正确姿势
  10. 城市运行一网统管_全国率先!“一屏观天下、一网管全城”,临港城市运行“一网统管”平台启动建设...
  11. python的匿名函数返回值_Python匿名函数返回值输出问题望指点
  12. Hadoop(五)HBase基础
  13. java高并发日志_高并发下log4j的性能瓶颈
  14. Android 三星手机不能调起应用市场
  15. 牛的障碍Cow Steeplechase
  16. 统计数组中出现次数最多的元素并输出
  17. c语言汇编程序100例,汇编语言100例
  18. MATLAB 数学应用 微分方程 常微分方程 选择ODE求解器
  19. 重现Struts1的操纵classLoader漏洞
  20. dpkg制作deb包详解

热门文章

  1. redis+celery+django设置外网可访问
  2. error: missing or invalid dependency detected while loading class file 'RDD.class'.
  3. ubuntu下面调整Atom的python运行结果中的字体大小
  4. 数值方法:数值微分与数值积分
  5. OpenCV学习笔记九-Canny边缘检测
  6. 2011年5月19日盘后分析:把握行情运行主线 静待大盘明确信号
  7. SAS,SATA普及文档
  8. tomcat的根路径设置
  9. 2015级C++第2周实践项目
  10. Retrofit2/OkHttp 重写覆盖headers 与 不重写覆盖Headers