Slide 1

Slide 1 text

Groovy code quality reports by Grygoriy Mykhalyunyo [email protected] grygoriy.com @grishaster

Slide 2

Slide 2 text

Agenda CodeNarc GMetrics

Slide 3

Slide 3 text

CodeNarc http://codenarc.sourceforge.net/ CodeNarc analyzes Groovy code for defects, bad practices, inconsistencies, style issues and more. A flexible framework for rules, rulesets and custom rules means it's easy to configure CodeNarc to fit into your project. Build tool, framework support, and report generation are all enterprise ready.

Slide 4

Slide 4 text

CodeNarc Can be runed from - command line - as ant task - as maven task - as gradle task - as grails plugin

Slide 5

Slide 5 text

CodeNarc at gradle apply plugin: 'code-quality' codeNarcConfigFileName = 'config/codenarc/rules.groovy'

Slide 6

Slide 6 text

CodeNarc ruleset ruleset { description 'Rules Sample Groovy Gradle Project' ruleset('rulesets/basic.xml') ruleset('rulesets/braces.xml') ruleset('rulesets/exceptions.xml') ruleset('rulesets/imports.xml') ruleset('rulesets/logging.xml') ruleset('rulesets/naming.xml') { 'ClassName' { enabled = false } } ruleset('rulesets/unnecessary.xml') { 'UnnecessaryReturnKeyword' { enabled = false } } ruleset('rulesets/unused.xml') }

Slide 7

Slide 7 text

CodeNarc report

Slide 8

Slide 8 text

CodeNarc custome rules import org.codenarc.rule.AbstractRule import org.codenarc.source.SourceCode /** * Sample rule. Checks for static fields. */ class MyStaticFieldRule extends AbstractRule { String name = 'MyStaticField' 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) } } } } }

Slide 9

Slide 9 text

CodeNarc at Grails grails install-plugin codenarc grails codenarc

Slide 10

Slide 10 text

Gmetrics http://gmetrics.sourceforge.net/ The GMetrics project provides calculation and reporting of size and complexity metrics for Groovy source code. GMetrics scans Groovy source code, applying a set of metrics, and generates an HTML report of the results.

Slide 11

Slide 11 text

Gmetrics • Cyclomatic Complexity. • ABC Size/Complexity. Also see the C2 Wiki page. • Lines per method • Lines per class

Slide 12

Slide 12 text

Gmetrics at Grails • grails install-plugin gmetrics • grails gmetrics

Slide 13

Slide 13 text

Gmetrics sample report

Slide 14

Slide 14 text

Thank you Grygoriy Mykhalyunyo [email protected] grygoriy.com @grishaster