SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Statische Code-Analyse für Groovy & Grails mit CodeNarc gearconf 2011 Vortrag von Stefan Glase am 10.06. 2011
Stefan Glase, OPITZ CONSULTING Software-EntwicklerJava EE, Spring, Groovy, Grails Trainer und Coach Sprecher und Autor
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
1 Was ist CodeNarc?
„         “ Was ist CodeNarc? CodeNarc analyzes Groovy codefordefects, badpractices, inconsistencies, style issuesandmore. http://codenarc.sourceforge.net/
Was ist CodeNarc? Aktuelle Version 0.14 (seit heute!) Bibliothek ist im Maven Central Repository verfügbar 241 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.13</version> </dependency>
Was ist CodeNarc? Beispiel HTML-Report
2 CodeNarc Regeln und Regelwerke
CodeNarc Regeln und Regelwerke ,[object Object]
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 imAstVisitor,[object Object]
CodeNarc Regeln und Regelwerke Regeln liegen in Form von XML-Dokumenten zur einfachen Einbindung und Konfiguration der anzuwendenden Regeln vor.
3 CodeNarc im Browser
CodeNarc im Browser http://meetcodenarc.appspot.com/
CodeNarc im Browser
4 Eigene CodeNarc Regeln erstellen
Eigene CodeNarc Regeln erstellen Anforderungen (              )
Eigene CodeNarc Regeln erstellen Checkout der Sourcen von SourceForge svncheckout https://codenarc.svn.sourceforge.net/svnroot/codenarc codenarc
Eigene CodeNarc Regeln erstellen Bauen des Projektes mit Maven mvninstall
Eigene CodeNarc Regeln erstellen Erstellen der Regel mit CodeNarc eigenem Groovy Script groovy codenarc.groovycreate-rule
Eigene CodeNarc Regeln erstellen Editieren des MessageBundle (korrekte Sortierung) src/main/resources/codenarc-base-messages.properties
Eigene CodeNarc Regeln erstellen Implementierung des Tests zur Absicherung der Regel src/test/groovy/org.codenarc.rule.exceptions.AvoidPrintStackTraceRuleTest
Eigene CodeNarc Regeln erstellen Implementierung der Regel und des AST-Visitors src/main/groovy/org.codenarc.rule.exceptions.AvoidPrintStackTraceRule
Eigene CodeNarc Regeln erstellen 1. Patch erstellen 2. Eintrag im BugTracker  mit angehängtem Patch erstellen Bereitstellen der eigenen Regel
Eigene CodeNarc Regeln erstellen Mehr Informationen für Entwickler auf der CodeNarc Webseite http://codenarc.sourceforge.net/codenarc-developer-guide.html
5 Integration in Gradle-basierte Groovy-Anwendungen
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 Code QualitityPlugin verwendet Checkstyle für Java-Code CodeNarc für Groovy-Code Mehr dazu: http://www.gradle.org/code_quality_plugin.html
Integration in Gradle-basierte Groovy-Anwendungen Live-Demo … bitte Daumen drücken!
6 Integration in Grails-Anwendungen
Was ist Grails?
„         “ 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
Integration in Grails-Anwendungen Zur Integration von CodeNarc in Grails existiert das CodeNarcPlugin http://grails.org/plugin/codenarc
Integration in Grails-Anwendungen Live-Demo … bitte noch einmal Daumen drücken!
7 Weitere Integrationsmöglichkeiten
Weitere Integrationsmöglichkeiten IDEs IntelliJ………………………............................ (IDEA CodeNarcPlugin) Application Frameworks Grails ………………………............................ (GrailsCodeNarcPlugin) Griffon ………………………………………….. (Griffon CodeNarcPlugin) Build- und Code-Analyse-Werkzeuge Gradle ………………………………………….. (Gradle Code Quality Plugin) Maven ………………………………………….. (MavenCodeNarcPlugin) Hudson/Jenkins ……………………………..... (Hudson ViolationsPlugin) Sonar …………………………………………... (Sonar Groovy Plugin) http://codenarc.sourceforge.net/codenarc-other-tools-frameworks.html
Fazit

Weitere ähnliche Inhalte

Andere mochten auch

Oakwook Asia Neighbourhood Campaign Thonglor Bangkok
Oakwook Asia Neighbourhood Campaign Thonglor BangkokOakwook Asia Neighbourhood Campaign Thonglor Bangkok
Oakwook Asia Neighbourhood Campaign Thonglor BangkokS.E.A Images Co Ltd, Thailand
 
Lang-aux-functions
Lang-aux-functionsLang-aux-functions
Lang-aux-functionsjjaviering
 
IOSH Managing Safely Certificate
IOSH Managing Safely CertificateIOSH Managing Safely Certificate
IOSH Managing Safely CertificateClaire Ransom-Dart
 
Francisco Alexandre - 31mai14 1º Congresso A&R SUS
Francisco Alexandre - 31mai14 1º Congresso A&R SUSFrancisco Alexandre - 31mai14 1º Congresso A&R SUS
Francisco Alexandre - 31mai14 1º Congresso A&R SUSAutismo & Realidade
 
Introdução a Hooks - Aprenda a customizar o WordPress com filtros e ações
Introdução a Hooks - Aprenda a customizar o WordPress com filtros e açõesIntrodução a Hooks - Aprenda a customizar o WordPress com filtros e ações
Introdução a Hooks - Aprenda a customizar o WordPress com filtros e açõesfrq
 
Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016Carlos Buenosvinos
 
Software Coding- Software Coding
Software Coding- Software CodingSoftware Coding- Software Coding
Software Coding- Software CodingNikhil Pandit
 

Andere mochten auch (12)

Oakwook Asia Neighbourhood Campaign Thonglor Bangkok
Oakwook Asia Neighbourhood Campaign Thonglor BangkokOakwook Asia Neighbourhood Campaign Thonglor Bangkok
Oakwook Asia Neighbourhood Campaign Thonglor Bangkok
 
Lang-aux-functions
Lang-aux-functionsLang-aux-functions
Lang-aux-functions
 
Andragogia y pedagogía
Andragogia y pedagogíaAndragogia y pedagogía
Andragogia y pedagogía
 
B.Tech certificate
B.Tech certificateB.Tech certificate
B.Tech certificate
 
IOSH Managing Safely Certificate
IOSH Managing Safely CertificateIOSH Managing Safely Certificate
IOSH Managing Safely Certificate
 
Francisco Alexandre - 31mai14 1º Congresso A&R SUS
Francisco Alexandre - 31mai14 1º Congresso A&R SUSFrancisco Alexandre - 31mai14 1º Congresso A&R SUS
Francisco Alexandre - 31mai14 1º Congresso A&R SUS
 
Introdução a Hooks - Aprenda a customizar o WordPress com filtros e ações
Introdução a Hooks - Aprenda a customizar o WordPress com filtros e açõesIntrodução a Hooks - Aprenda a customizar o WordPress com filtros e ações
Introdução a Hooks - Aprenda a customizar o WordPress com filtros e ações
 
Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016
 
O Electronie słów kilka
O Electronie słów kilkaO Electronie słów kilka
O Electronie słów kilka
 
Software Coding- Software Coding
Software Coding- Software CodingSoftware Coding- Software Coding
Software Coding- Software Coding
 
Resume
ResumeResume
Resume
 
Copia De Fontanarrosa
Copia De FontanarrosaCopia De Fontanarrosa
Copia De Fontanarrosa
 

Ähnlich wie Code Analyse mit Codenarc - Gearconf 2011 - OPITZ CONSULTING - Stefan Glase

Von Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenQAware GmbH
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascriptdzuvic
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartWerner Keil
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBTobias Trelle
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous IntegrationMilena Reichel
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grailsschmichri
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit MavenStefan Scheidt
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
1. Technologie-Tag - Webstandards
1. Technologie-Tag - Webstandards1. Technologie-Tag - Webstandards
1. Technologie-Tag - WebstandardsNico Steiner
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHagilemethoden
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...Aberla
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineOPEN KNOWLEDGE GmbH
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 
Enterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalEnterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalQAware GmbH
 

Ähnlich wie Code Analyse mit Codenarc - Gearconf 2011 - OPITZ CONSULTING - Stefan Glase (20)

Sonar - Software Qualitätsmanagement ohne Schmerzen
Sonar - Software Qualitätsmanagement ohne SchmerzenSonar - Software Qualitätsmanagement ohne Schmerzen
Sonar - Software Qualitätsmanagement ohne Schmerzen
 
Von Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 MinutenVon Maven zu Gradle in 45 Minuten
Von Maven zu Gradle in 45 Minuten
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ StuttgartApache DeviceMap - Web-Dev-BBQ Stuttgart
Apache DeviceMap - Web-Dev-BBQ Stuttgart
 
MongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDBMongoDB Munich 2012: Spring Data MongoDB
MongoDB Munich 2012: Spring Data MongoDB
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous Integration
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grails
 
Automatischer Build mit Maven
Automatischer Build mit MavenAutomatischer Build mit Maven
Automatischer Build mit Maven
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der Praxis
 
1. Technologie-Tag - Webstandards
1. Technologie-Tag - Webstandards1. Technologie-Tag - Webstandards
1. Technologie-Tag - Webstandards
 
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbHDocker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
Docker Workshop Experten Forum Stuttgart 2015, Agile Methoden GmbH
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Net@night asp.net mvc
Net@night asp.net mvcNet@night asp.net mvc
Net@night asp.net mvc
 
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
ESEconf2011 - Trost Joachim: "Tool supported technical Code and Design Qualit...
 
Integration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-PipelineIntegration von Security-Checks in die CI-Pipeline
Integration von Security-Checks in die CI-Pipeline
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
Enterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue NormalEnterprise Cloud Native ist das neue Normal
Enterprise Cloud Native ist das neue Normal
 

Mehr von OPITZ CONSULTING Deutschland

Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"OPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OPITZ CONSULTING Deutschland
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OPITZ CONSULTING Deutschland
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OPITZ CONSULTING Deutschland
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungOPITZ CONSULTING Deutschland
 

Mehr von OPITZ CONSULTING Deutschland (20)

OC|Webcast: Grundlagen der Oracle Lizenzierung
OC|Webcast: Grundlagen der Oracle LizenzierungOC|Webcast: Grundlagen der Oracle Lizenzierung
OC|Webcast: Grundlagen der Oracle Lizenzierung
 
OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021
 
OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021
 
OC|Webcast "Daten wirklich nutzen"
OC|Webcast "Daten wirklich nutzen"OC|Webcast "Daten wirklich nutzen"
OC|Webcast "Daten wirklich nutzen"
 
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
Architecture Room Stuttgart - "Cloud-native ist nur ein Teil des Spiels!"
 
OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"
 
OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"
 
10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
 
OC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-LizenzierungOC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-Lizenzierung
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
 
OC|Weekly Talk The Power of DevOps…
OC|Weekly Talk  The Power of DevOps…OC|Weekly Talk  The Power of DevOps…
OC|Weekly Talk The Power of DevOps…
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring
 
OC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remoteOC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remote
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud Nutzung
 

Code Analyse mit Codenarc - Gearconf 2011 - OPITZ CONSULTING - Stefan Glase

  • 1. Statische Code-Analyse für Groovy & Grails mit CodeNarc gearconf 2011 Vortrag von Stefan Glase am 10.06. 2011
  • 2. Stefan Glase, OPITZ CONSULTING Software-EntwicklerJava EE, Spring, Groovy, Grails Trainer und Coach Sprecher und Autor
  • 3.
  • 4. 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
  • 5. 1 Was ist CodeNarc?
  • 6. “ Was ist CodeNarc? CodeNarc analyzes Groovy codefordefects, badpractices, inconsistencies, style issuesandmore. http://codenarc.sourceforge.net/
  • 7. Was ist CodeNarc? Aktuelle Version 0.14 (seit heute!) Bibliothek ist im Maven Central Repository verfügbar 241 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.13</version> </dependency>
  • 8. Was ist CodeNarc? Beispiel HTML-Report
  • 9. 2 CodeNarc Regeln und Regelwerke
  • 10.
  • 11. Analyse des Abstract Syntax Tree (AST) mittels Visitor-Objekten (AstVisitor)
  • 12. Inklusive Hilfsklasse AstUtil für übliche Operationen auf dem AST
  • 13.
  • 14. CodeNarc Regeln und Regelwerke Regeln liegen in Form von XML-Dokumenten zur einfachen Einbindung und Konfiguration der anzuwendenden Regeln vor.
  • 15. 3 CodeNarc im Browser
  • 16. CodeNarc im Browser http://meetcodenarc.appspot.com/
  • 18. 4 Eigene CodeNarc Regeln erstellen
  • 19. Eigene CodeNarc Regeln erstellen Anforderungen ( )
  • 20. Eigene CodeNarc Regeln erstellen Checkout der Sourcen von SourceForge svncheckout https://codenarc.svn.sourceforge.net/svnroot/codenarc codenarc
  • 21. Eigene CodeNarc Regeln erstellen Bauen des Projektes mit Maven mvninstall
  • 22. Eigene CodeNarc Regeln erstellen Erstellen der Regel mit CodeNarc eigenem Groovy Script groovy codenarc.groovycreate-rule
  • 23. Eigene CodeNarc Regeln erstellen Editieren des MessageBundle (korrekte Sortierung) src/main/resources/codenarc-base-messages.properties
  • 24. Eigene CodeNarc Regeln erstellen Implementierung des Tests zur Absicherung der Regel src/test/groovy/org.codenarc.rule.exceptions.AvoidPrintStackTraceRuleTest
  • 25. Eigene CodeNarc Regeln erstellen Implementierung der Regel und des AST-Visitors src/main/groovy/org.codenarc.rule.exceptions.AvoidPrintStackTraceRule
  • 26. Eigene CodeNarc Regeln erstellen 1. Patch erstellen 2. Eintrag im BugTracker mit angehängtem Patch erstellen Bereitstellen der eigenen Regel
  • 27. Eigene CodeNarc Regeln erstellen Mehr Informationen für Entwickler auf der CodeNarc Webseite http://codenarc.sourceforge.net/codenarc-developer-guide.html
  • 28. 5 Integration in Gradle-basierte Groovy-Anwendungen
  • 29. 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 Code QualitityPlugin verwendet Checkstyle für Java-Code CodeNarc für Groovy-Code Mehr dazu: http://www.gradle.org/code_quality_plugin.html
  • 30. Integration in Gradle-basierte Groovy-Anwendungen Live-Demo … bitte Daumen drücken!
  • 31. 6 Integration in Grails-Anwendungen
  • 33. “ 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
  • 34. Integration in Grails-Anwendungen Zur Integration von CodeNarc in Grails existiert das CodeNarcPlugin http://grails.org/plugin/codenarc
  • 35. Integration in Grails-Anwendungen Live-Demo … bitte noch einmal Daumen drücken!
  • 37. Weitere Integrationsmöglichkeiten IDEs IntelliJ………………………............................ (IDEA CodeNarcPlugin) Application Frameworks Grails ………………………............................ (GrailsCodeNarcPlugin) Griffon ………………………………………….. (Griffon CodeNarcPlugin) Build- und Code-Analyse-Werkzeuge Gradle ………………………………………….. (Gradle Code Quality Plugin) Maven ………………………………………….. (MavenCodeNarcPlugin) Hudson/Jenkins ……………………………..... (Hudson ViolationsPlugin) Sonar …………………………………………... (Sonar Groovy Plugin) http://codenarc.sourceforge.net/codenarc-other-tools-frameworks.html
  • 38. Fazit
  • 39. Im Netz ... CodeNarc: http://codenarc.sourceforge.net/ http://meetcodenarc.appspot.com/ http://www.youtube.com/watch?v=ZPu8FaZZwRw Beispiele: https://github.com/codescape/codenarc-gearconf Twitter: @caseaplace
  • 40. Kontakt Stefan Glase Senior Consultant OPITZ CONSULTING Gummersbach GmbHKirchstr. 6, 51647 GummersbachTel. +49 (2261) 6001 – 0stefan.glase@opitz-consulting.com