On Aug 23, 2009, at 3:36 AM, Adam Murdoch wrote:



Hans Dockter wrote:

On Jul 21, 2009, at 6:43 AM, Adam Murdoch wrote:

Hi,

I've just checked in a 'code-quality' plugin, which currently adds Checkstyle and CodeNarc tasks to Java and Groovy projects, respectively. My plan is that this plugin would later also add support for tools such as cobertura, PMD, and so on.

I have some questions about which conventions this plugin should follow. I've just made some stuff up, based on what I've done on various projects, but I have no idea if they are conventions or not. Please let me know if you have an opinion on these:

- Where should the config files for these tools live? Currently, the plugin expected to find them at $projectDir/config/ checkstyle.xml and $projectDir/config/codenarc.xml.

With checkstyle you pretty often need additional configuration files. So may be $projectDir/config/checkstyle/checkstyle.xml might be a better choice. We might do it the same for codenarc. If more and more plugins need configuration files we might need to come up with some additional structure.


I think this make sense. I will change the default to config/ $toolName/$configFileName


- Should we provide some default configuration for these tools? Maybe some named configuration sets?

Our future archetype plugin could either create empty templates or optionally preconfigured xml files.


I'm not that keen on solutions which rely on an archetype plugin being used. An archetype plugin feels to me like a work-around for over-complex initial setup. I think it would be much better if we choose good defaults and have sensible behaviour when things are not present.

I agree. The advantage of such templates is that they could offer a very helpful start for doing custom configurations. That would not be needed I we have a DSL for code quality in the future.



- Should it be possible to ignore violations?

I think so.

(and why?)

Because some users want it :)


And why do they want it? I want to figure out if we need a consistent model for handling violations, and what that might be. I don't want to expose something that is different per-tool.

I see.

One important use case for not letting the build fail is, if this is not accepted by all members of the team. The might be projects were some people care more than others and the others don't have a standing to make a strong policy. They still want to get informed if things are not in shape and might even be the cleaner. It is not the project I would like to work in but I know they exists.

Beside this I don't know a strong reason why you don't want to let the build fail if policies are violated.


We have a few options:
1. Nothing other than what the tool provides via it's config file (eg checkstyle suppressions file)
2. An ignoreViolations flag on the task
3. A maxViolations property on the task

But they can disable this behavior already by setting the appropriate properties, can't they.

Not yet. The Checkstyle and Codenarc tasks don't have any settings which let you control this.

As I understand the code, the Checkstyle.properties property is applied against the Ant checkstyle task. So a Gradle user could for example set the properties failOnViolation, maxErrors and maxWarnings of the Ant checkstyle task. Am I missing something?

We might expose this properties explicitly by our own API.

- Hans

--
Hans Dockter
Gradle Project Manager
http://www.gradle.org


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to