CodeNarc - CodeNarc Open Source Project Reports

##### General

- Home
- Downloads
- Road Map
- Javadocs
- Mailing Lists
- Bug Tracker
- SourceForge Project

##### Running

- Ant Task Usage
- Command-Line
- Run as a Test
- Other Tools/Frameworks

##### Using

- Creating a RuleSet
- Creating a Rule
- Configuring Rules
- Starter RuleSet (All)

##### Report Types

- HTML (HtmlReportWriter)
- XML (XmlReportWriter)
- Text (TextReportWriter)

##### Sample Reports

- Sample HTML Report
- Open Source Projects

##### Rules

- Rule Index
- Basic Rules
- Braces Rules
- Concurrency Rules
- Convention Rules
- Design Rules
- DRY Rules
- Exceptions Rules
- Formatting Rules
- Generic Rules
- Grails Rules
- Groovyism Rules
- Imports Rules
- JDBC Rules
- JUnit Rules
- Logging Rules
- Naming Rules
- Size/Complexity Rules
- Security Rules
- Serialization Rules
- Unnecessary Rules
- Unused Rules

##### Developing

- Developer Guide

##### Project Documentation

- Project Information
- Project Reports

## CodeNarc - Open Source Project Reports

NOTE: The Groovy, Griffon and GPars projects all include CodeNarc as part of their regular build process.

Sample reports for the Grails and Gradle projects are shown below.

Disclaimer: The following reports are generated using a "one-size-fits-all" Generic RuleSet, that does not reflect the standards and best practices specific to the individual projects. In general, a RuleSet should be customized to reflect the specific standards and practices of a project or development organization, and to filter out "legitimate" violations.

### Grails

CodeNarc report for Grails 2.0.0 RC1

### Gradle

CodeNarc report for Gradle 1.0-milestone-9

### Generic RuleSet

    ruleset {

        description 'A Generic Groovy RuleSet'

        ruleset("rulesets/basic.xml")

        ruleset("rulesets/concurrency.xml")

        ruleset("rulesets/imports.xml")

        ruleset("rulesets/junit.xml")  {
            exclude 'JUnitStyleAssertions'
        }

        CyclomaticComplexity

        ruleset("rulesets/unused.xml")

        ruleset("rulesets/unnecessary.xml") {
        exclude 'UnnecessaryGString'
        exclude 'UnnecessaryPublicModifier'
        exclude 'UnnecessaryReturnKeyword'
        exclude 'UnnecessarySemicolon'
        }
    }