Top Banner
© OPITZ CONSULTING GmbH 2011 Folie 1 Statische Code-Analyse für Groovy & Grails mit CodeNarc Statische Code-Analyse für Groovy & Grails mit CodeNarc CamelCaseCon 2011 Vortrag von Stefan Glase am 07.09.2011
41

Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

Nov 04, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 1Statische Code-Analyse für Groovy & Grails mit CodeNarc

Statische Code-Analyse für Groovy & Grails mit CodeNarc

CamelCaseCon 2011

Vortrag von Stefan Glase

am 07.09.2011

Page 2: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 2Statische Code-Analyse für Groovy & Grails mit CodeNarc

Stefan Glase, OPITZ CONSULTING

Software-EntwicklerJava EE, Spring, Groovy, Grails

Trainer und Coach

Sprecher und Autor

Page 3: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 3Statische Code-Analyse für Groovy & Grails mit CodeNarc

Märkte

Java

SOA

ORACLE

BI/DWH

Outtasking

Kunden

Branchen-

übergreifend

Über 600

Kunden

Leistungs-

angebot

IT-Strategie

Beratung

Implementierung

Betrieb

Training

Fakten

Gründung 1990

400 Mitarbeiter

8 Standorte in

D/PL

Industrie / Versorger /

Telekommunikation

29%

Handel / Logistik /

Dienstleistungen

29%

42%

Öffentliche Auftraggeber /

Banken & Versicherungen /

Vereine & Verbände

© OPITZ CONSULTING GmbH 2011

Page 4: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 4Statische Code-Analyse für Groovy & Grails mit CodeNarc

Agenda

Was ist CodeNarc?

CodeNarc Regeln und Regelwerke

CodeNarc im Browser

Eigene CodeNarc Regeln erstellen

Integration in Gradle-basierte Groovy-Anwendungen

Integration in Grails-Anwendungen

Weitere Integrationsmöglichkeiten

Fazit

Page 5: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 5Statische Code-Analyse für Groovy & Grails mit CodeNarc

1Was ist CodeNarc?

Page 6: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 6Statische Code-Analyse für Groovy & Grails mit CodeNarc

„ “

Was ist CodeNarc?

CodeNarc analyzes Groovy code for defects,

bad practices, inconsistencies, style issues

and more.

http://codenarc.sourceforge.net/

Page 7: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 7Statische Code-Analyse für Groovy & Grails mit CodeNarc

Was ist CodeNarc?

Aktuelle Version 0.15

Bibliothek ist im Maven Central Repository verfügbar

264 Regeln in kategorisierten Regelwerken

Verschiedene Arten von Reports: XML, HTML, Text

Kontakt zu den Entwicklern Chris Mair und Hamlet D'Arcy

via Mailing-Liste, BugTracker oder Twitter

<dependency><groupId>org.codenarc</groupId><artifactId>CodeNarc</artifactId><version>0.15</version>

</dependency>

Page 8: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 8Statische Code-Analyse für Groovy & Grails mit CodeNarc

Was ist CodeNarc?

Beispiel HTML-Report

Page 9: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 9Statische Code-Analyse für Groovy & Grails mit CodeNarc

2CodeNarc Regeln und Regelwerke

Page 10: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 10Statische Code-Analyse für Groovy & Grails mit CodeNarc

CodeNarc Regeln und Regelwerke

Regeln (Rule) werden zu Regelwerken

(RuleSet) zusammengefasst und liefern

Verstöße (Violation) im untersuchten

Code (SourceCode)

Analyse des Abstract Syntax Tree (AST)

mittels Visitor-Objekten (AstVisitor)

Inklusive Hilfsklasse AstUtil für

übliche Operationen auf dem AST

Erzeugung von Verstößen (Violation)

mittels einfacher API im AstVisitor

Page 11: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 11Statische Code-Analyse für Groovy & Grails mit CodeNarc

CodeNarc Regeln und Regelwerke

264 Regeln… und die Zahl ist stetig wachsend!

BigDecimalInstantiationRule

BooleanMethodReturnsNullRule

CloneableWithoutCloneRule

ConstantTernaryExpressionRule

ConstantIfExpressionRule

RemoveAllOnSelfRule

DuplicateCaseStatementRule

EqualsAndHashCodeRule

EmptyElseBlockRule

EmptyFinallyBlockRule

EmptyForStatementRule

EmptySwitchStatementRule

EmptySynchronizedStatementRule

EmptyTryBlockRule

SerializableClassMustDefineSerialVersionUIDRule

BooleanGetBooleanRule

BrokenOddnessCheckRule

ConsecutiveLiteralAppendsRule

… und viele weitere!

Page 12: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 12Statische Code-Analyse für Groovy & Grails mit CodeNarc

CodeNarc Regeln und Regelwerke

Ein paar Beispiele…

def a = '' + 123

Page 13: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 13Statische Code-Analyse für Groovy & Grails mit CodeNarc

CodeNarc Regeln und Regelwerke

abstract class CodeMonster {

static { }

int hashCode() { return 1 }

}

Page 14: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 14Statische Code-Analyse für Groovy & Grails mit CodeNarc

CodeNarc Regeln und Regelwerke

Regeln liegen in Form von XML-Dokumenten zur einfachen

Einbindung und Konfiguration der anzuwendenden Regeln

vor

Page 15: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 15Statische Code-Analyse für Groovy & Grails mit CodeNarc

3CodeNarc im Browser

Page 16: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 16Statische Code-Analyse für Groovy & Grails mit CodeNarc

CodeNarc im Browser

http://meetcodenarc.appspot.com/

Page 17: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 17Statische Code-Analyse für Groovy & Grails mit CodeNarc

CodeNarc im Browser

Page 18: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 18Statische Code-Analyse für Groovy & Grails mit CodeNarc

4Eigene CodeNarc Regeln erstellen

Page 19: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 19Statische Code-Analyse für Groovy & Grails mit CodeNarc

Eigene CodeNarc Regeln erstellen

Anforderungen

( )

Page 20: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 20Statische Code-Analyse für Groovy & Grails mit CodeNarc

Eigene CodeNarc Regeln erstellen

Checkout der Sourcen von SourceForgesvn checkout https://codenarc.svn.sourceforge.net/svnroot/codenarc codenarc

Page 21: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 21Statische Code-Analyse für Groovy & Grails mit CodeNarc

Eigene CodeNarc Regeln erstellen

Bauen des Projektes mit Mavenmvn install

Page 22: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 22Statische Code-Analyse für Groovy & Grails mit CodeNarc

Eigene CodeNarc Regeln erstellen

Erstellen der Regel mit CodeNarc eigenem Groovy Scriptgroovy codenarc.groovy create-rule

Page 23: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 23Statische Code-Analyse für Groovy & Grails mit CodeNarc

Eigene CodeNarc Regeln erstellen

Editieren des MessageBundle (korrekte Sortierung)src/main/resources/codenarc-base-messages.properties

Page 24: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 24Statische Code-Analyse für Groovy & Grails mit CodeNarc

Eigene CodeNarc Regeln erstellen

Implementierung des Tests zur Absicherung der Regelsrc/test/groovy/org.codenarc.rule.exceptions.AvoidPrintStackTraceRuleTest

Page 25: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 25Statische Code-Analyse für Groovy & Grails mit CodeNarc

Eigene CodeNarc Regeln erstellen

Implementierung der Regel und des AST-Visitorssrc/main/groovy/org.codenarc.rule.exceptions.AvoidPrintStackTraceRule

Page 26: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 26Statische Code-Analyse für Groovy & Grails mit CodeNarc

Eigene CodeNarc Regeln erstellen

Bereitstellen der eigenen Regel

1. Patch erstellen

2. Eintrag im BugTracker mit

angehängtem Patch erstellen

Page 27: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 27Statische Code-Analyse für Groovy & Grails mit CodeNarc

Eigene CodeNarc Regeln erstellen

Mehr Informationen für Entwickler auf der CodeNarc Webseite

http://codenarc.sourceforge.net/codenarc-developer-

guide.html

Page 28: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 28Statische Code-Analyse für Groovy & Grails mit CodeNarc

5 Integration in Gradle-basierte Groovy-Anwendungen

Page 29: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 29Statische Code-Analyse für Groovy & Grails mit CodeNarc

Integration in Gradle-basierte Groovy-Anwendungen

CodeNarc ist fest integriert im Gradle Code Quality Plugin Gradle 1.0 Milestone 3 enthält CodeNarc 0.13

http://www.gradle.org/code_quality_plugin.html

Code Qualitity Plugin verwendet Checkstyle für Java-Code

CodeNarc für Groovy-Code

CodeNarc Plugin als eigenständiges Plugin Version von CodeNarc ist frei konfigurierbar

http://evgeny-goldin.com/wiki/Gradle-CodeNarc-plugin

Page 30: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 30Statische Code-Analyse für Groovy & Grails mit CodeNarc

Integration in Gradle-basierte Groovy-Anwendungen

Live-Demo… bitte Daumen drücken!

Page 31: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 31Statische Code-Analyse für Groovy & Grails mit CodeNarc

6 Integration in Grails-Anwendungen

Page 32: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 32Statische Code-Analyse für Groovy & Grails mit CodeNarc

Was ist Grails?

Page 33: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 33Statische Code-Analyse für Groovy & Grails mit CodeNarc

„ “

Was ist Grails?

Grails is an advanced and innovative open source web

application platform that delivers new levels of developer

productivity by applying principles like Convention over

Configuration. Grails helps development teams embrace agile

methodologies, deliver quality applications in reduced

amounts of time, and focus on what really matters: creating

high quality, easy to use applications that delight users.

Grails naturally complements Java application development

since it is built on Spring and based on Groovy, the leading

dynamic language for the Java platform.

http://www.springsource.com/developer/grails

Page 34: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 34Statische Code-Analyse für Groovy & Grails mit CodeNarc

Integration in Grails-Anwendungen

Zur Integration von CodeNarc in Grails existiert das CodeNarc Plugin

http://grails.org/plugin/codenarc

Page 35: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 35Statische Code-Analyse für Groovy & Grails mit CodeNarc

Integration in Grails-Anwendungen

Live-Demo… bitte noch einmal Daumen drücken!

Page 36: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 36Statische Code-Analyse für Groovy & Grails mit CodeNarc

7Weitere Integrationsmöglichkeiten

Page 37: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 37Statische Code-Analyse für Groovy & Grails mit CodeNarc

Weitere Integrationsmöglichkeiten

IDEs IntelliJ………………………............................ (IDEA CodeNarc Plugin)

Application Frameworks Grails ………………………............................ (Grails CodeNarc Plugin)

Griffon ………………………………………….. (Griffon CodeNarc Plugin)

Build- und Code-Analyse-Werkzeuge Gradle ………………………………………….. (Gradle Code Quality Plugin)

Maven ………………………………………….. (Maven CodeNarc Plugin)

Hudson/Jenkins ……………………………..... (Hudson Violations Plugin)

Sonar …………………………………………... (Sonar Groovy Plugin)

http://codenarc.sourceforge.net/codenarc-other-tools-frameworks.html

Page 38: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 38Statische Code-Analyse für Groovy & Grails mit CodeNarc

Fazit

Page 39: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 39Statische Code-Analyse für Groovy & Grails mit CodeNarc

Im Netz...

CodeNarc:

http://codenarc.sourceforge.net

http://meetcodenarc.appspot.com

http://www.youtube.com/watch?v=ZPu8FaZZwRw

Beispiele:

https://github.com/codescape/presentations

Twitter:

@stefanglase

Page 40: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 40Statische Code-Analyse für Groovy & Grails mit CodeNarc

Fragen und Antworten

Page 41: Statische Code-Analyse für Groovy & Grails mit CodeNarccamelcasecon.de/pdf/groovy/CamelCaseCon2011_CodeNarc_StefanGlase.pdf · Statische Code-Analyse für Groovy & Grails mit CodeNarc

© OPITZ CONSULTING GmbH 2011 Folie 41Statische Code-Analyse für Groovy & Grails mit CodeNarc

Kontakt

Stefan GlaseSenior Consultant

OPITZ CONSULTING Gummersbach GmbH

Kirchstr. 6, 51647 Gummersbach

Tel. +49 (2261) 6001 – 0

[email protected]