Исключение Checkstyles Gradle, вызванное: java.lang.IllegalArgumentException: заданное имя COMPACT_CTOR_DEF

#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)

  1. Страница открытых выпусков
  2. Прокрутите до интересующей вас версии и нажмите на ссылку «checkstyle-<your_version&&t;» над хэшем фиксации. Он откроет код при этой фиксации.
  3. Перейдите к 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. Я следовал этому подходу, и я все еще получаю ту же ошибку