報錯信息:
org.jruby.rack.RackInitializationException: java.lang.IllegalArgumentException:
No SqaleSubCharacteristic annotation was found on class
com.lingtian.sonar.check.rulechecks.ConfigFileUserCheck
at org.jruby.rack.RackInitializationException.wrap
(RackInitializationException.java:31)
at org.jruby.rack.RackApplicationFactoryDecorator.init
(RackApplicationFactoryDecorator.java:98)
at org.jruby.rack.RackServletContextListener.contextInitialized
(RackServletContextListener.java:50)
at org.sonar.server.platform.web.RubyRailsContextListener.contextInitialized
(RubyRailsContextListener.java:38)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
在規則上面添加 @SqaleSubCharacteristic("ARCHITECTURE_CHANGEABILITY")
添加之後報錯:
2019.05.03 11:25:23 ERROR web[][o.a.c.c.C.[.[.[/]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.web.PlatformServletContextListener
java.lang.IllegalStateException: One of HTML description or
Markdown description must be defined for rule [repository=configFiles, key=ConfigFiles-User-Check]
at org.sonar.api.server.rule.RulesDefinition$NewRule.validate
(RulesDefinition.java:903)
at org.sonar.api.server.rule.RulesDefinition$NewRule.access$800
(RulesDefinition.java:661)
at org.sonar.api.server.rule.RulesDefinition$RepositoryImpl.<init>(RulesDefinition.java:568)
at org.sonar.api.server.rule.RulesDefinition$RepositoryImpl.<init>(RulesDefinition.java:542)
at org.sonar.api.server.rule.RulesDefinition$Context.registerRepository
(RulesDefinition.java:438)
at org.sonar.api.server.rule.RulesDefinition$Context.access$500(
RulesDefinition.java:382)
at org.sonar.api.server.rule.RulesDefinition$NewRepositoryImpl.done
(RulesDefinition.java:514)
at com.lingtian.sonar.rules.ConfigFileScanRulesDefinition.define
(ConfigFileScanRulesDefinition.java:20)
at org.sonar.server.rule.RuleDefinitionsLoader.load
(RuleDefinitionsLoader.java:52)
at org.sonar.server.rule.RegisterRules.start(RegisterRules.java:99)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
我發現了我的問題,需要在@Rule中添加字段'description' 例如 :
@Rule(
key = "Rule1",
name = "RuleExampleCheck",
description = "This rule do nothing",
priority = Priority.INFO,
tags = {"try"}
)