graphql-java-generator / graphql-gradle-plugin-project

graphql-gradle-plugin is a Gradle Plugin for GraphQL, based on graphql-java. It accelerates the development for both the client and the server, by generating the Java code. It allows a quicker development when in contract-first approach, by avoiding to code the boilerplate code.
https://graphql-maven-plugin-project.graphql-java-generator.com/
MIT License
54 stars 8 forks source link

The plugin is running all tasks instead of running only the configured tasks #18

Closed DimaSol closed 12 months ago

DimaSol commented 1 year ago

Hi, I think I have an issue that is caused by same reason as https://github.com/graphql-java-generator/graphql-gradle-plugin-project/issues/13 From debugging the plugin I've found that each and every tasks of this plugin is being registered as a dependency of the compileJava task which is wrong (only the tasks that are configured should be registered as a dependency of compileJava) i.e. I only have generateServerCodeConf closure so it should be the only task that the compileJava depends on... I'm using the latest version of the plugin: com.graphql-java-generator.graphql-gradle-plugin3:2.2 What I see in debug (of my pretty complex multi project structure) is that when project.afterEvaluate(new Action<Project>() {...} in the GraphQLPlugin#apply is called, the loop (line 118) for (Task t : project.getTasks()) { is eventually invoking the configure of all plugin tasks and this method registers the task as a dependency of compileJava. It also seems that the plugin registers the depending tasks twice, once in the configure method of itself and once at the condition of if ((boolean) t.property("initialized")) while iterating over all project tasks in the project.afterEvaluate(new Action<Project>() {...} callback in GraphQLPlugin#apply - If this is indeed the case I think the dependency registration in the common task configure method can be removed, no? Unfortunately I'm not yet able to reproduce with a simple gradle project to provide with an example and I can't share the original project...

Attaching the stack trace (please look for the >>>>>> sign to indicate the invocations I've mentioned above) when hit a break point in the client code generation task (which is not configured in the gradle build file):

>>>>>> configure:575, CommonTask (com.graphql_java_generator.gradleplugin)
configure:43, CommonTask (com.graphql_java_generator.gradleplugin)
configure:104, ConfigureUtil (org.gradle.util.internal)
execute:167, ConfigureUtil$WrappedConfigureAction (org.gradle.util.internal)
execute:123, DefaultUserCodeApplicationContext$CurrentApplication$1 (org.gradle.configuration.internal)
run:110, DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1 (org.gradle.api.internal)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
execute:107, DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction (org.gradle.api.internal)
execute:44, DefaultMutationGuard$2 (org.gradle.api.internal)
execute:44, DefaultMutationGuard$2 (org.gradle.api.internal)
execute:329, ImmutableActionSet$SetWithManyActions (org.gradle.internal)
doAdd:262, DefaultDomainObjectCollection (org.gradle.api.internal)
doAdd:113, DefaultNamedDomainObjectCollection (org.gradle.api.internal)
add:256, DefaultDomainObjectCollection (org.gradle.api.internal)
tryCreate:944, DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider (org.gradle.api.internal)
access$1401:654, DefaultTaskContainer$TaskCreatingProvider (org.gradle.api.internal.tasks)
run:680, DefaultTaskContainer$TaskCreatingProvider$1 (org.gradle.api.internal.tasks)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
tryCreate:676, DefaultTaskContainer$TaskCreatingProvider (org.gradle.api.internal.tasks)
calculateOwnValue:929, DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider (org.gradle.api.internal)
calculateValue:107, AbstractMinimalProvider (org.gradle.api.internal.provider)
collectEntries:100, Collectors$ElementFromProvider (org.gradle.api.internal.provider)
collectEntries:334, Collectors$TypedCollector (org.gradle.api.internal.provider)
collectInto:329, Collectors$TypedCollector (org.gradle.api.internal.provider)
realize:62, DefaultPendingSource (org.gradle.api.internal.collections)
realizePending:39, DefaultPendingSource (org.gradle.api.internal.collections)
iterator:63, SortedSetElementSource (org.gradle.api.internal.collections)
iterator:128, DefaultDomainObjectCollection (org.gradle.api.internal)
iterator:620, DefaultTaskContainer (org.gradle.api.internal.tasks)
>>>>>> execute:118, GraphQLPlugin$1 (com.graphql_java_generator.gradleplugin)
execute:76, GraphQLPlugin$1 (com.graphql_java_generator.gradleplugin)
execute:123, DefaultUserCodeApplicationContext$CurrentApplication$1 (org.gradle.configuration.internal)
run:171, DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction$1 (org.gradle.configuration.internal)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
execute:168, DefaultListenerBuildOperationDecorator$BuildOperationEmittingAction (org.gradle.configuration.internal)
dispatch:95, BroadcastDispatch$ActionInvocationHandler (org.gradle.internal.event)
dispatch:83, BroadcastDispatch$ActionInvocationHandler (org.gradle.internal.event)
dispatch:43, AbstractBroadcastDispatch (org.gradle.internal.event)
dispatch:245, BroadcastDispatch$SingletonDispatch (org.gradle.internal.event)
dispatch:157, BroadcastDispatch$SingletonDispatch (org.gradle.internal.event)
dispatch:83, AbstractBroadcastDispatch (org.gradle.internal.event)
dispatch:69, AbstractBroadcastDispatch (org.gradle.internal.event)
dispatch:346, BroadcastDispatch$CompositeDispatch (org.gradle.internal.event)
dispatch:249, BroadcastDispatch$CompositeDispatch (org.gradle.internal.event)
dispatch:141, ListenerBroadcast (org.gradle.internal.event)
dispatch:37, ListenerBroadcast (org.gradle.internal.event)
invoke:94, ProxyDispatchAdapter$DispatchingInvocationHandler (org.gradle.internal.dispatch)
afterEvaluate:-1, $Proxy49 (jdk.proxy1)
execute:247, LifecycleProjectEvaluator$NotifyAfterEvaluate$1 (org.gradle.configuration.project)
execute:244, LifecycleProjectEvaluator$NotifyAfterEvaluate$1 (org.gradle.configuration.project)
stepEvaluationListener:1439, DefaultProject (org.gradle.api.internal.project)
run:253, LifecycleProjectEvaluator$NotifyAfterEvaluate (org.gradle.configuration.project)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
lambda$run$0:114, LifecycleProjectEvaluator$EvaluateProject (org.gradle.configuration.project)
accept:-1, LifecycleProjectEvaluator$EvaluateProject$$Lambda$539/0x000000012e5364a0 (org.gradle.configuration.project)
lambda$applyToMutableState$0:360, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
apply:-1, DefaultProjectStateRegistry$ProjectStateImpl$$Lambda$540/0x000000012e5366d8 (org.gradle.api.internal.project)
lambda$fromMutableState$1:383, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
create:-1, DefaultProjectStateRegistry$ProjectStateImpl$$Lambda$541/0x000000012e536920 (org.gradle.api.internal.project)
withReplacedLocks:345, DefaultWorkerLeaseService (org.gradle.internal.work)
fromMutableState:383, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
applyToMutableState:359, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
run:100, LifecycleProjectEvaluator$EvaluateProject (org.gradle.configuration.project)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
evaluate:72, LifecycleProjectEvaluator (org.gradle.configuration.project)
evaluate:762, DefaultProject (org.gradle.api.internal.project)
evaluate:153, DefaultProject (org.gradle.api.internal.project)
lambda$ensureSelfConfigured$1:63, ProjectLifecycleController (org.gradle.api.internal.project)
run:-1, ProjectLifecycleController$$Lambda$537/0x000000012e5330d0 (org.gradle.api.internal.project)
lambda$doTransition$12:236, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$233/0x000000012e2e22c8 (org.gradle.internal.model)
doTransition:247, StateTransitionController (org.gradle.internal.model)
doTransition:235, StateTransitionController (org.gradle.internal.model)
lambda$maybeTransitionIfNotCurrentlyTransitioning$9:196, StateTransitionController (org.gradle.internal.model)
run:-1, StateTransitionController$$Lambda$538/0x000000012e5332f8 (org.gradle.internal.model)
withLock:34, DefaultSynchronizer (org.gradle.internal.work)
maybeTransitionIfNotCurrentlyTransitioning:192, StateTransitionController (org.gradle.internal.model)
ensureSelfConfigured:63, ProjectLifecycleController (org.gradle.api.internal.project)
ensureConfigured:334, DefaultProjectStateRegistry$ProjectStateImpl (org.gradle.api.internal.project)
configure:33, TaskPathProjectEvaluator (org.gradle.execution)
configureHierarchy:49, TaskPathProjectEvaluator (org.gradle.execution)
prepareProjects:50, DefaultProjectsPreparer (org.gradle.configuration)
prepareProjects:64, BuildTreePreparingProjectsPreparer (org.gradle.configuration)
run:52, BuildOperationFiringProjectsPreparer$ConfigureBuild (org.gradle.configuration)
execute:29, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:26, DefaultBuildOperationRunner$1 (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:47, DefaultBuildOperationRunner (org.gradle.internal.operations)
run:68, DefaultBuildOperationExecutor (org.gradle.internal.operations)
prepareProjects:40, BuildOperationFiringProjectsPreparer (org.gradle.configuration)
lambda$prepareProjects$2:84, VintageBuildModelController (org.gradle.initialization)
run:-1, VintageBuildModelController$$Lambda$525/0x000000012e517610 (org.gradle.initialization)
lambda$doTransition$12:236, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$233/0x000000012e2e22c8 (org.gradle.internal.model)
doTransition:247, StateTransitionController (org.gradle.internal.model)
doTransition:235, StateTransitionController (org.gradle.internal.model)
lambda$transitionIfNotPreviously$10:210, StateTransitionController (org.gradle.internal.model)
run:-1, StateTransitionController$$Lambda$235/0x000000012e2e2718 (org.gradle.internal.model)
withLock:34, DefaultSynchronizer (org.gradle.internal.work)
transitionIfNotPreviously:206, StateTransitionController (org.gradle.internal.model)
prepareProjects:84, VintageBuildModelController (org.gradle.initialization)
prepareToScheduleTasks:71, VintageBuildModelController (org.gradle.initialization)
lambda$prepareToScheduleTasks$2:129, DefaultBuildLifecycleController (org.gradle.internal.build)
run:-1, DefaultBuildLifecycleController$$Lambda$231/0x000000012e2e1e78 (org.gradle.internal.build)
lambda$doTransition$12:236, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$233/0x000000012e2e22c8 (org.gradle.internal.model)
doTransition:247, StateTransitionController (org.gradle.internal.model)
doTransition:235, StateTransitionController (org.gradle.internal.model)
lambda$maybeTransition$8:187, StateTransitionController (org.gradle.internal.model)
run:-1, StateTransitionController$$Lambda$232/0x000000012e2e20a0 (org.gradle.internal.model)
withLock:34, DefaultSynchronizer (org.gradle.internal.work)
maybeTransition:183, StateTransitionController (org.gradle.internal.model)
prepareToScheduleTasks:127, DefaultBuildLifecycleController (org.gradle.internal.build)
scheduleRequestedTasks:36, DefaultBuildTreeWorkPreparer (org.gradle.internal.buildtree)
lambda$doScheduleAndRunTasks$3:96, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
apply:-1, DefaultBuildTreeLifecycleController$$Lambda$229/0x000000012e2e1830 (org.gradle.internal.buildtree)
withNewWorkGraph:109, DefaultIncludedBuildTaskGraph (org.gradle.composite.internal)
doScheduleAndRunTasks:95, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
lambda$scheduleAndRunTasks$1:76, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
get:-1, DefaultBuildTreeLifecycleController$$Lambda$225/0x000000012e2e0d90 (org.gradle.internal.buildtree)
lambda$runBuild$5:113, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
get:-1, DefaultBuildTreeLifecycleController$$Lambda$226/0x000000012e2e0fb8 (org.gradle.internal.buildtree)
lambda$transition$5:166, StateTransitionController (org.gradle.internal.model)
get:-1, StateTransitionController$$Lambda$228/0x000000012e2e1408 (org.gradle.internal.model)
doTransition:247, StateTransitionController (org.gradle.internal.model)
lambda$transition$6:166, StateTransitionController (org.gradle.internal.model)
create:-1, StateTransitionController$$Lambda$227/0x000000012e2e11e0 (org.gradle.internal.model)
withLock:44, DefaultSynchronizer (org.gradle.internal.work)
transition:166, StateTransitionController (org.gradle.internal.model)
runBuild:110, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
scheduleAndRunTasks:76, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
scheduleAndRunTasks:71, DefaultBuildTreeLifecycleController (org.gradle.internal.buildtree)
run:53, BuildModelActionRunner (org.gradle.tooling.internal.provider.runner)
run:35, ChainingBuildActionRunner (org.gradle.launcher.exec)
run:49, ProblemReportingBuildActionRunner (org.gradle.internal.buildtree)
run:65, BuildOutcomeReportingBuildActionRunner (org.gradle.launcher.exec)
run:136, FileSystemWatchingBuildActionRunner (org.gradle.tooling.internal.provider)
run:41, BuildCompletionNotifyingBuildActionRunner (org.gradle.launcher.exec)
lambda$execute$0:40, RootBuildLifecycleBuildActionExecutor (org.gradle.launcher.exec)
apply:-1, RootBuildLifecycleBuildActionExecutor$$Lambda$182/0x000000012e2c45c0 (org.gradle.launcher.exec)
run:122, DefaultRootBuildState (org.gradle.composite.internal)
execute:40, RootBuildLifecycleBuildActionExecutor (org.gradle.launcher.exec)
execute:40, DefaultBuildTreeContext (org.gradle.internal.buildtree)
lambda$execute$0:65, BuildTreeLifecycleBuildActionExecutor (org.gradle.launcher.exec)
apply:-1, BuildTreeLifecycleBuildActionExecutor$$Lambda$109/0x000000012e1e7210 (org.gradle.launcher.exec)
run:53, BuildTreeState (org.gradle.internal.buildtree)
execute:65, BuildTreeLifecycleBuildActionExecutor (org.gradle.launcher.exec)
call:61, RunAsBuildOperationBuildActionExecutor$3 (org.gradle.launcher.exec)
call:57, RunAsBuildOperationBuildActionExecutor$3 (org.gradle.launcher.exec)
execute:204, DefaultBuildOperationRunner$CallableBuildOperationWorker (org.gradle.internal.operations)
execute:199, DefaultBuildOperationRunner$CallableBuildOperationWorker (org.gradle.internal.operations)
execute:66, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner$2 (org.gradle.internal.operations)
execute:157, DefaultBuildOperationRunner (org.gradle.internal.operations)
execute:59, DefaultBuildOperationRunner (org.gradle.internal.operations)
call:53, DefaultBuildOperationRunner (org.gradle.internal.operations)
call:73, DefaultBuildOperationExecutor (org.gradle.internal.operations)
execute:57, RunAsBuildOperationBuildActionExecutor (org.gradle.launcher.exec)
lambda$execute$0:36, RunAsWorkerThreadBuildActionExecutor (org.gradle.launcher.exec)
create:-1, RunAsWorkerThreadBuildActionExecutor$$Lambda$108/0x000000012e1cdb48 (org.gradle.launcher.exec)
withLocks:249, DefaultWorkerLeaseService (org.gradle.internal.work)
runAsWorkerThread:109, DefaultWorkerLeaseService (org.gradle.internal.work)
execute:36, RunAsWorkerThreadBuildActionExecutor (org.gradle.launcher.exec)
execute:110, ContinuousBuildActionExecutor (org.gradle.tooling.internal.provider.continuous)
execute:64, SubscribableBuildActionExecutor (org.gradle.tooling.internal.provider)
execute:46, DefaultBuildSessionContext (org.gradle.internal.session)
apply:100, BuildSessionLifecycleBuildActionExecuter$ActionImpl (org.gradle.tooling.internal.provider)
apply:88, BuildSessionLifecycleBuildActionExecuter$ActionImpl (org.gradle.tooling.internal.provider)
run:69, BuildSessionState (org.gradle.internal.session)
execute:62, BuildSessionLifecycleBuildActionExecuter (org.gradle.tooling.internal.provider)
execute:41, BuildSessionLifecycleBuildActionExecuter (org.gradle.tooling.internal.provider)
execute:63, StartParamsValidatingActionExecuter (org.gradle.tooling.internal.provider)
execute:31, StartParamsValidatingActionExecuter (org.gradle.tooling.internal.provider)
execute:52, SessionFailureReportingActionExecuter (org.gradle.tooling.internal.provider)
execute:40, SessionFailureReportingActionExecuter (org.gradle.tooling.internal.provider)
execute:47, SetupLoggingActionExecuter (org.gradle.tooling.internal.provider)
execute:31, SetupLoggingActionExecuter (org.gradle.tooling.internal.provider)
doBuild:65, ExecuteBuild (org.gradle.launcher.daemon.server.exec)
execute:37, BuildCommandOnly (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:39, WatchForDisconnection (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:29, ResetDeprecationLogger (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:35, RequestStopIfSingleUsedDaemon (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
create:78, ForwardClientInput$2 (org.gradle.launcher.daemon.server.exec)
create:75, ForwardClientInput$2 (org.gradle.launcher.daemon.server.exec)
swap:38, Swapper (org.gradle.util.internal)
execute:75, ForwardClientInput (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
execute:55, LogAndCheckHealth (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
doBuild:63, LogToClient (org.gradle.launcher.daemon.server.exec)
execute:37, BuildCommandOnly (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
doBuild:84, EstablishBuildEnvironment (org.gradle.launcher.daemon.server.exec)
execute:37, BuildCommandOnly (org.gradle.launcher.daemon.server.exec)
proceed:104, DaemonCommandExecution (org.gradle.launcher.daemon.server.api)
run:52, StartBuildOrRespondWithBusy$1 (org.gradle.launcher.daemon.server.exec)
run:297, DaemonStateCoordinator$1 (org.gradle.launcher.daemon.server)
onExecute:64, ExecutorPolicy$CatchAndRecordFailures (org.gradle.internal.concurrent)
run:49, ManagedExecutorImpl$1 (org.gradle.internal.concurrent)
runWorker:1136, ThreadPoolExecutor (java.util.concurrent)
run:635, ThreadPoolExecutor$Worker (java.util.concurrent)
run:833, Thread (java.lang)
DimaSol commented 1 year ago

Looks like further debugging led me to find the root cause which is a combination of the plugin together with the https://github.com/nebula-plugins/gradle-lint-plugin plugin because the lint plugin is configuring tasks for the linting...

etienne-sf commented 1 year ago

Hello,

The result is unclear for me.

Is this issue due to the lint plug-in? In which case there is nothing to do in the graphql-gradle-plug-in-project.

Or is there an issue in the graphql-gradle-plug-in-project?

DimaSol commented 1 year ago

IMO the issue is with the graphql plugin assumption on when does the task configure method is called and this assumption doesn't hold in combination with the lint plugin...

etienne-sf commented 12 months ago

Hello, this is solved in release 2.3