Hello Adam,
I added the following line to the top of my build.gradle:
org.codenarc.ant.CodeNarcTask.class.classLoader.addURL(file('config/codenarc').toURI().toURL())
And changed my config/codenarc/rules.groovy back to using:
rule('MyCustomRuleScript.groovy')
and this also successfully locates the MyCustomRuleScript.groovy file which
I have placed next to rules.groovy in the config/codenarc folder.
However, the same exception is being thrown.
My script file is taken straight from the codenarc howto example:
[code]
import org.codenarc.rule.AbstractRule
import org.codenarc.source.SourceCode
/**
* Sample rule. Checks for static fields.
*/
class MyCustomRuleScript extends AbstractRule {
String name = 'MyCustomRule'
int priority = 2
void applyTo(SourceCode sourceCode, List violations) {
sourceCode.ast.classes.each { clazz ->
clazz.fields.each { fieldNode ->
if (fieldNode.static) {
violations << createViolation(sourceCode, fieldNode)
}
}
}
}
}
[/code]
I should have mentioned this earlier... I am running this in Cygwin on
Windows XP with gradle 0.9.2.
The output of running "gradle clean build -s" is as follows:
[code]
% gradle clean build -s
:clean
:compileJava UP-TO-DATE
:compileGroovy
:processResources
:classes
:jar SKIPPED
:war
:assemble
:checkstyleMain UP-TO-DATE
:checkstyleTest
:codenarcMain
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\MyDev\workspace\ajfwil\bookm\bookm-gradle\build.gradle'
* What went wrong:
Execution failed for task ':codenarcMain'.
Cause: org.codehaus.groovy.control.MultipleCompilationErrorsException:
startup failed:
script1000001.groovy: 2: unable to resolve class
org.codenarc.source.SourceCode
@ line 2, column 1.
import org.codenarc.source.SourceCode
^
script1000001.groovy: 1: unable to resolve class
org.codenarc.rule.AbstractRule
@ line 1, column 1.
import org.codenarc.rule.AbstractRule
^
2 errors
* Try:
Run with -d option to get more details. Run with -S option to get the full
(very verbose) stacktrace.
* Exception is:
org.gradle.api.tasks.LocationAwareTaskExecutionException: Build file
'C:\MyDev\workspace\ajfwil\bookm\bookm-gradle\build.gradle'
Execution failed for task ':codenarcMain'.
at
org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:66)
at
org.gradle.api.internal.tasks.DefaultTaskExecuter.execute(DefaultTaskExecuter.java:43)
at
org.gradle.api.internal.project.taskfactory.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:32)
at
org.gradle.api.internal.project.taskfactory.ExecutionShortCircuitTaskExecuter.execute(ExecutionShortCircuitTaskExecuter.java:50)
at
org.gradle.api.internal.tasks.SkipTaskExecuter.doExecute(SkipTaskExecuter.java:57)
at
org.gradle.api.internal.tasks.SkipTaskExecuter.execute(SkipTaskExecuter.java:35)
at
org.gradle.api.internal.tasks.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:32)
at
org.gradle.api.internal.AbstractTask.execute(AbstractTask.java:231)
at
org.gradle.execution.DefaultTaskGraphExecuter.executeTask(DefaultTaskGraphExecuter.java:167)
at
org.gradle.execution.DefaultTaskGraphExecuter.doExecute(DefaultTaskGraphExecuter.java:160)
at
org.gradle.execution.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:78)
at
org.gradle.execution.TaskNameResolvingBuildExecuter.execute(TaskNameResolvingBuildExecuter.java:113)
at
org.gradle.execution.DelegatingBuildExecuter.execute(DelegatingBuildExecuter.java:54)
at
org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:153)
at
org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:107)
at
org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:75)
at
org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:41)
at
org.gradle.launcher.RunBuildAction.execute(RunBuildAction.java:27)
at
org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:209)
at
org.gradle.launcher.CommandLineActionFactory$WithLoggingAction.execute(CommandLineActionFactory.java:193)
at org.gradle.launcher.Main.execute(Main.java:55)
at org.gradle.launcher.Main.main(Main.java:40)
at
org.gradle.launcher.ProcessBootstrap.runNoExit(ProcessBootstrap.java:46)
at
org.gradle.launcher.ProcessBootstrap.run(ProcessBootstrap.java:28)
at org.gradle.launcher.GradleMain.main(GradleMain.java:24)
Caused by: : org.codehaus.groovy.control.MultipleCompilationErrorsException:
startup failed:
script1000001.groovy: 2: unable to resolve class
org.codenarc.source.SourceCode
@ line 2, column 1.
import org.codenarc.source.SourceCode
^
script1000001.groovy: 1: unable to resolve class
org.codenarc.rule.AbstractRule
@ line 1, column 1.
import org.codenarc.rule.AbstractRule
^
2 errors
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:116)
at
org.gradle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(BasicAntBuilder.java:71)
at
org.gradle.api.internal.project.ant.BasicAntBuilder.doInvokeMethod(BasicAntBuilder.java:86)
at
org.gradle.api.internal.project.DefaultAntBuilder.super$3$invokeMethod(DefaultAntBuilder.groovy)
at
org.gradle.api.internal.project.DefaultAntBuilder.invokeMethod(DefaultAntBuilder.groovy:37)
at
org.gradle.api.plugins.quality.AntCodeNarc.execute(AntCodeNarc.groovy:28)
at org.gradle.api.plugins.quality.CodeNarc.check(CodeNarc.java:36)
at
org.gradle.api.internal.BeanDynamicObject.invokeMethod(BeanDynamicObject.java:158)
at
org.gradle.api.internal.CompositeDynamicObject.invokeMethod(CompositeDynamicObject.java:93)
at
org.gradle.api.plugins.quality.CodeNarc_Decorated.invokeMethod(Unknown
Source)
at org.gradle.util.ReflectionUtil.invoke(ReflectionUtil.groovy:23)
at
org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$2.execute(AnnotationProcessingTaskFactory.java:131)
at
org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$2.execute(AnnotationProcessingTaskFactory.java:130)
at
org.gradle.api.internal.tasks.DefaultTaskExecuter.executeActions(DefaultTaskExecuter.java:58)
... 24 more
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException:
startup failed:
script1000001.groovy: 2: unable to resolve class
org.codenarc.source.SourceCode
@ line 2, column 1.
import org.codenarc.source.SourceCode
^
script1000001.groovy: 1: unable to resolve class
org.codenarc.rule.AbstractRule
@ line 1, column 1.
import org.codenarc.rule.AbstractRule
^
2 errors
at
org.codenarc.ruleset.RuleSetUtil$_loadRuleScriptFile_closure1.doCall(RuleSetUtil.groovy:47)
at
org.codenarc.ruleset.RuleSetUtil.loadRuleScriptFile(RuleSetUtil.groovy:45)
at
org.codenarc.ruleset.TopLevelDelegate.rule(RuleSetBuilder.groovy:81)
at Script1$_run_closure1.doCall(Script1.groovy:26)
at Script1$_run_closure1.doCall(Script1.groovy)
at
org.codenarc.ruleset.RuleSetBuilder.ruleset(RuleSetBuilder.groovy:41)
at org.codenarc.ruleset.RuleSetBuilder$ruleset.call(Unknown Source)
at
org.codenarc.ruleset.GroovyDslRuleSet$_closure1.doCall(GroovyDslRuleSet.groovy:48)
at Script1.run(Script1.groovy:1)
at
org.codenarc.ruleset.GroovyDslRuleSet.<init>(GroovyDslRuleSet.groovy:53)
at
org.codenarc.ruleset.RuleSetUtil.loadRuleSetFile(RuleSetUtil.groovy:39)
at org.codenarc.ruleset.RuleSetUtil$loadRuleSetFile.call(Unknown
Source)
at
org.codenarc.CodeNarcRunner$_createRuleSet_closure2.doCall(CodeNarcRunner.groovy:96)
at
org.codenarc.CodeNarcRunner.createRuleSet(CodeNarcRunner.groovy:95)
at org.codenarc.CodeNarcRunner.execute(CodeNarcRunner.groovy:66)
at org.codenarc.CodeNarcRunner$execute.call(Unknown Source)
at org.codenarc.ant.CodeNarcTask.execute(CodeNarcTask.groovy:86)
at
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at
org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
... 37 more
BUILD FAILED
Total time: 11.093 secs
[/code]
Thanks again for your help with this.
Regards,
Adam Wilmore
--
View this message in context:
http://gradle.1045684.n5.nabble.com/code-quality-plugin-location-of-custom-codenarc-rule-tp3373768p3380548.html
Sent from the gradle-user mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email