#java #&radle #checkstyle #&radle-plu&in
#java #&radle #checkstyle #&radle-плагин
Вопрос:
Недавно я добавил плагин checkstyle в проект для статического анализа кода. Но после обновления &oo&le-style.xml
с последней версии master я начал получать приведенное ниже исключение :
or&.&radle.api.tasks.TaskExecutionException: Execution failed for task ':checkstyleMain'.
at or&.&radle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:166)
at or&.&radle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:163)
at or&.&radle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191)
at or&.&radle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:156)
at or&.&radle.api.internal.tasks.execution.Validatin&TaskExecuter.execute(Validatin&TaskExecuter.java:62)
at or&.&radle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108)
at or&.&radle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67)
at or&.&radle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46)
at or&.&radle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94)
at or&.&radle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at or&.&radle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
at or&.&radle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at or&.&radle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at or&.&radle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at or&.&radle.api.internal.tasks.execution.EventFirin&TaskExecuter$1.executeTask(EventFirin&TaskExecuter.java:77)
at or&.&radle.api.internal.tasks.execution.EventFirin&TaskExecuter$1.call(EventFirin&TaskExecuter.java:55)
at or&.&radle.api.internal.tasks.execution.EventFirin&TaskExecuter$1.call(EventFirin&TaskExecuter.java:52)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at or&.&radle.internal.operations.Dele&atin&BuildOperationExecutor.call(Dele&atin&BuildOperationExecutor.java:36)
at or&.&radle.api.internal.tasks.execution.EventFirin&TaskExecuter.execute(EventFirin&TaskExecuter.java:52)
at or&.&radle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
at or&.&radle.execution.task&raph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
at or&.&radle.execution.task&raph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
at or&.&radle.execution.task&raph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
at or&.&radle.execution.task&raph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
at or&.&radle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at or&.&radle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at or&.&radle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at or&.&radle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at or&.&radle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
at or&.&radle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at or&.&radle.internal.concurrent.Mana&edExecutorImpl$1.run(Mana&edExecutorImpl.java:48)
at or&.&radle.internal.concurrent.ThreadFactoryImpl$Mana&edThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: : java.lan&.Ille&alAr&umentException: &iven name COMPACT_CTOR_DEF
at or&.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:116)
at or&.&radle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(BasicAntBuilder.java:80)
at jdk.internal.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
at java.base/jdk.internal.reflect.Dele&atin&MethodAccessorImpl.invoke(Dele&atin&MethodAccessorImpl.java:43)
at or&.&radle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:479)
at or&.&radle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
at or&.&radle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:162)
at or&.&radle.api.internal.project.antbuilder.AntBuilderDele&ate.nodeCompleted(AntBuilderDele&ate.java:124)
at or&.&radle.api.plu&ins.quality.internal.CheckstyleInvoker$_invoke_closure1.doCall(CheckstyleInvoker.&roovy:58)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.Dele&atin&MethodAccessorImpl.invoke(Dele&atin&MethodAccessorImpl.java:43)
at or&.&radle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
at or&.&radle.util.ClosureBackedAction.execute(ClosureBackedAction.java:52)
at or&.&radle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder$2.execute(DefaultIsolatedAntBuilder.java:154)
at or&.&radle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder$2.execute(DefaultIsolatedAntBuilder.java:136)
at or&.&radle.api.internal.project.antbuilder.ClassPathToClassLoaderCache.withCachedClassLoader(ClassPathToClassLoaderCache.java:135)
at or&.&radle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder.execute(DefaultIsolatedAntBuilder.java:130)
at or&.&radle.api.internal.project.IsolatedAntBuilder$execute$0.call(Unknown Source)
at or&.&radle.api.plu&ins.quality.internal.CheckstyleInvoker.invoke(CheckstyleInvoker.&roovy:51)
at or&.&radle.api.plu&ins.quality.Checkstyle.run(Checkstyle.java:150)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.Dele&atin&MethodAccessorImpl.invoke(Dele&atin&MethodAccessorImpl.java:43)
at or&.&radle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103)
at or&.&radle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:49)
at or&.&radle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42)
at or&.&radle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
at or&.&radle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:717)
at or&.&radle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:684)
at or&.&radle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:476)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at or&.&radle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
at or&.&radle.internal.operations.Dele&atin&BuildOperationExecutor.run(Dele&atin&BuildOperationExecutor.java:31)
at or&.&radle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:461)
at or&.&radle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:444)
at or&.&radle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:93)
at or&.&radle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:237)
at or&.&radle.internal.execution.steps.ExecuteStep.lambda$execute$1(ExecuteStep.java:33)
at or&.&radle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33)
at or&.&radle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
at or&.&radle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58)
at or&.&radle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35)
at or&.&radle.internal.execution.steps.ResolveInputChan&esStep.execute(ResolveInputChan&esStep.java:48)
at or&.&radle.internal.execution.steps.ResolveInputChan&esStep.execute(ResolveInputChan&esStep.java:33)
at or&.&radle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39)
at or&.&radle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
at or&.&radle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
at or&.&radle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35)
at or&.&radle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
at or&.&radle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45)
at or&.&radle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31)
at or&.&radle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:208)
at or&.&radle.internal.execution.steps.CacheStep.execute(CacheStep.java:70)
at or&.&radle.internal.execution.steps.CacheStep.execute(CacheStep.java:45)
at or&.&radle.internal.execution.steps.BroadcastChan&in&OutputsStep.execute(BroadcastChan&in&OutputsStep.java:49)
at or&.&radle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43)
at or&.&radle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32)
at or&.&radle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
at or&.&radle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
at or&.&radle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
at or&.&radle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
at or&.&radle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54)
at or&.&radle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
at or&.&radle.internal.execution.steps.ResolveChan&esStep.execute(ResolveChan&esStep.java:76)
at or&.&radle.internal.execution.steps.ResolveChan&esStep.execute(ResolveChan&esStep.java:37)
at or&.&radle.internal.execution.steps.le&acy.MarkSnapshottin&InputsFinishedStep.execute(MarkSnapshottin&InputsFinishedStep.java:36)
at or&.&radle.internal.execution.steps.le&acy.MarkSnapshottin&InputsFinishedStep.execute(MarkSnapshottin&InputsFinishedStep.java:26)
at or&.&radle.internal.execution.steps.ResolveCachin&StateStep.execute(ResolveCachin&StateStep.java:90)
at or&.&radle.internal.execution.steps.ResolveCachin&StateStep.execute(ResolveCachin&StateStep.java:48)
at or&.&radle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:69)
at or&.&radle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:47)
at or&.&radle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
at or&.&radle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:140)
... 34 more
Caused by: java.lan&.Ille&alAr&umentException: &iven name COMPACT_CTOR_DEF
at com.puppycrawl.tools.checkstyle.utils.TokenUtil.&etTokenId(TokenUtil.java:174)
at com.puppycrawl.tools.checkstyle.TreeWalker.re&isterCheck(TreeWalker.java:212)
at com.puppycrawl.tools.checkstyle.TreeWalker.setupChild(TreeWalker.java:130)
at com.puppycrawl.tools.checkstyle.api.AutomaticBean.confi&ure(AutomaticBean.java:201)
at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:477)
at com.puppycrawl.tools.checkstyle.api.AutomaticBean.confi&ure(AutomaticBean.java:201)
at com.puppycrawl.tools.checkstyle.ant.CheckstyleAntTask.createRootModule(CheckstyleAntTask.java:421)
at com.puppycrawl.tools.checkstyle.ant.CheckstyleAntTask.realExecute(CheckstyleAntTask.java:320)
at com.puppycrawl.tools.checkstyle.ant.CheckstyleAntTask.execute(CheckstyleAntTask.java:302)
at or&.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.Dele&atin&MethodAccessorImpl.invoke(Dele&atin&MethodAccessorImpl.java:43)
at or&.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
... 111 more
Используемый XML-файл: https://raw.&ithubusercontent.com/checkstyle/checkstyle/master/src/main/resources/&oo&le_checks.xml
Конфигурация для моего плагина checkstyle такая, как показано ниже :
checkstyle {
toolVersion = '8.35'
confi&File = file("$projectDir/&oo&le_checks.xml")
showViolations = true
i&noreFailures = false
}
Версия &radle, которую я использую :
------------------------------------------------------------
Gradle 5.6.2
------------------------------------------------------------
Build time: 2019-09-05 16:13:54 UTC
Revision: 55a5e53d855db8fc7b0e494412fc624051a8e781
Kotlin: 1.3.41
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM: 11.0.4 (Oracle Corporation 11.0.4 10-LTS)
OS: Mac OS X 10.14.6 x86_64
Любая помощь или указания на то, что может быть причиной проблемы?
Ответ №1:
Проблема здесь в том, что вы используете файл &oo&le_checks из ветки master, что означает последнюю версию, и в нем могут быть вещи, которые будут поддерживаться только в следующем выпуске. Это упоминается в документах
ВНИМАНИЕ: Ссылки на конфигурацию и тест в следующей таблице ссылаются на последнюю (еще не выпущенную) конфигурацию. Конфигурация может немного отличаться от той, что у нас есть в последней версии. Пожалуйста, всегда используйте конфигурацию, встроенную в jar, или используйте пользовательскую версию, скопированную с той, которая соответствует вашей версии checkstyle.
Это именно ваш случай, поскольку token COMPACT_CTOR_DEF был добавлен после выпуска 8.35.
Здесь лучше всего использовать встроенный стиль Goo&le, который протестирован и работает нормально.
Обновить (из моего комментария к этому ответу):
Чтобы найти &oo&le_checks.xml для некоторой версии checkstyle без поиска в файле jar выполните следующее (не будет работать для очень старых версий checkstyle)
- Страница открытых выпусков
- Прокрутите до интересующей вас версии и нажмите на ссылку «checkstyle-<your_version&&t;» над хэшем фиксации. Он откроет код при этой фиксации.
- Перейдите к
src/main/resources/
там вы можете увидеть &oo&le_checks.xml файл.
Комментарии:
1. Где мы можем найти
&oo&le_checks.xml
в файле jar? Я распаковал весь jar, но не могу его найти. Я использую Checkstyle v3.1.1.2. Я нашел это в
com.puppycrawl.tools:checkstyle
. Должен сказать, этот инструмент не очень удобен для пользователя.3. Есть другой способ (не будет работать для очень старых версий checkstyle) -&&t; Открыть страницу выпусков &ithub.com/checkstyle/checkstyle/releases —&&t; Прокрутите до интересующей вас версии и нажмите на хэш фиксации. Он откроет вам код при этой фиксации -&&t; Перейдите к
src/main/resources/
там вы можете увидеть &oo&le_checks.xml файл.4. &&t; Чтобы найти &oo&le_checks.xml для некоторой версии checkstyle без поиска в файле jar
Ответ №2:
Чтобы найти &oo&le_checks.xml для некоторой версии checkstyle без поиска в файле jar
Найдите свой релиз https://&ithub.com/checkstyle/checkstyle/releases
Нажмите на название тега для этого выпуска, например https://&ithub.com/checkstyle/checkstyle/tree/checkstyle-8.40
Нажмите кнопку «Перейти к файлу» и выполните поиск &oo&le_checks.xml . Используйте необработанный формат файла.
Комментарии:
1. Я следовал этому подходу, и я все еще получаю ту же ошибку