сонар 4.5.4 Долг определение правила является недопустимым исключением

У меня есть собственные настроенные плагины csharp версии 2.1, когда я развернул плагин stylecope на сервере Sonar 4.5.4, некоторые правила получают исключения, как показано ниже, но после удаления этих правил все работает нормально. Это исключение я получаю в сонаре 4.5.4, но не сталкиваюсь с какими-либо проблемами в сонаре 4.2 и младшей версии. Мне нужно знать, почему возникает эта проблема и что я имею в виду? Пожалуйста, объясни. Спасибо

java.lang.IllegalArgumentException: Debt definition on rule 'stylecopcsharp:ConstFieldNamesMustBeginWithUpperCaseLetter' is invalid at org.sonar.server.rule.DeprecatedRulesDefinitionLoader.remediationFunction(DeprecatedRulesDefinitionLoader.java:135) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.rule.DeprecatedRulesDefinitionLoader.updateRuleDebtDefinitions(DeprecatedRulesDefinitionLoader.java:117) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.rule.DeprecatedRulesDefinitionLoader.complete(DeprecatedRulesDefinitionLoader.java:107) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.rule.RuleDefinitionsLoader.load(RuleDefinitionsLoader.java:53) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.rule.RegisterRules.start(RegisterRules.java:102) ~[sonar-server-4.5.4.jar:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_55] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.7.0_55] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.7.0_55] at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.7.0_55] at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:110) ~[picocontainer-2.14.3.jar:na] at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.java:89) ~[picocontainer-2.14.3.jar:na] at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84) ~[picocontainer-2.14.3.jar:na] at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169) ~[picocontainer-2.14.3.jar:na] at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132) ~[picocontainer-2.14.3.jar:na] at org.picocontainer.behaviors.Stored.start(Stored.java:110) ~[picocontainer-2.14.3.jar:na] at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1015) ~[picocontainer-2.14.3.jar:na] at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1008) ~[picocontainer-2.14.3.jar:na] at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:766) ~[picocontainer-2.14.3.jar:na] at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) ~[sonar-plugin-api-4.5.4.jar:na] at org.sonar.server.platform.ServerComponents$1.doPrivileged(ServerComponents.java:590) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.user.DoPrivileged.execute(DoPrivileged.java:43) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.platform.ServerComponents.executeStartupTasks(ServerComponents.java:586) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.platform.Platform.executeStartupTasks(Platform.java:126) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.platform.Platform.startLevel34Containers(Platform.java:122) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.platform.Platform.doStart(Platform.java:81) ~[sonar-server-4.5.4.jar:na] at org.sonar.server.platform.PlatformServletContextListener.contextInitialized(PlatformServletContextListener.java:43) ~[sonar-server-4.5.4.jar:na] at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973) [tomcat-embed-core-7.0.54.jar:7.0.54] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467) [tomcat-embed-core-7.0.54.jar:7.0.54] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-7.0.54.jar:7.0.54] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) [tomcat-embed-core-7.0.54.jar:7.0.54] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) [tomcat-embed-core-7.0.54.jar:7.0.54] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.7.0_55] at java.lang.Thread.run(Unknown Source) [na:1.7.0_55]


person chethan    schedule 25.08.2015    source источник
comment
Вы не указали версию своего плагина. Можете ли вы проверить, используете ли вы последнюю версию?   -  person G. Ann - SonarSource Team    schedule 25.08.2015
comment
Использую плагин версии 2.1. На самом деле мне нужно использовать последний плагин для плагина sonar-dotnet-fxcop, но я не смог найти последний сонар fxcop, который поддерживает сервер сонара 4.5.4.@G. Энн - команда SonarSource   -  person chethan    schedule 25.08.2015
comment
К вашему сведению @chethan тега sonarqube достаточно (нет необходимости в sonar-runner, sonarqube-5.0 и т. д.). Однако было бы лучше также включить c# или stylecop.   -  person Dinesh Bolkensteyn    schedule 25.08.2015


Ответы (1)


Подключаемые модули .NET и C# версии 2.1 несовместимы с более новыми версиями SonarQube (включая 4.5.4).

Вам действительно следует подумать об обновлении до последней версии подключаемого модуля C# и использовать MSBuild SonarQube Runner, разработанный в сотрудничестве с Microsoft, для анализа всех проектов .NET: он значительно улучшает работу, обеспечивает гораздо лучшие результаты анализа и намного проще в использовании.

Чтобы начать работу, см. http://redirect.sonarsource.com/plugins/csharp.html. .

Приведенная ниже информация носит исключительно информативный характер и позволит вам продолжить работу с неподдерживаемой устаревшей версией плагина C# (что плохо, так что подумайте дважды: p):

Я вижу, что вы создали свой собственный плагин StyleCop с ключом stylecopcsharp: вы должны определить действительные затраты на исправление SQALE для каждого правила, иначе SonarQube откажется запускаться.

Самый простой способ — удалить всю информацию о стоимости исправления SQALE. Теперь, если вы хотите сохранить SQALE, вы можете взглянуть на трассировку стека и посмотреть, как работает проверка SonarQube: DeprecatedRulesDefinitionLoader.java#L135

Могут быть и другие препятствия, препятствующие использованию .NET и C# с SonarQube 4.5.4, поэтому еще раз подумайте дважды, прежде чем идти по этому пути.

person Dinesh Bolkensteyn    schedule 25.08.2015
comment
Привет Динеш Большое спасибо. Еще один вопрос. Мне нужно использовать плагины sonar dotnet fxcop и sonar dotnet stylecop, потому что мне нужно много правил от fxcop и stylecop, а также жандарм (менее приоритетный). Если я обновлю версию плагина, я смогу получить эти плагины правил. - person chethan; 25.08.2015
comment
Поддержка @chethan FxCop встроена в плагин C# 4.1, и есть отдельный плагин SonarQube StyleCop версии 1.1 — docs.sonarqube.org/x/lgAW — однако поддержка Gendarme была прекращена, начиная с C# 3.x, и ее поддержка не будет добавлена ​​обратно. - person Dinesh Bolkensteyn; 25.08.2015