日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编写sonar插件 The following languages have no built-in quality profiles:xxx 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

sonar 自定義一種語言報(bào)錯(cuò):

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,必須實(shí)現(xiàn)BuiltInQualityProfilesDefinition擴(kuò)展點(diǎn);

ProfileDefinition?is deprecated since 6.6, we should use?BuiltInQualityProfilesDefinition

以列出默認(rèn)情況下應(yīng)為您的語言啟用的規(guī)則??梢詤⒖?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);}}

對(duì)應(yīng)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()));} }

修改之后還是一直報(bào):The following languages have no built-in quality?profiles: configfiles

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

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的编写sonar插件 The following languages have no built-in quality profiles:xxx的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。