enforcing code guidelines by extending jdeveloper’s auditing framework @oow14

52
Quality Assurance Enforcing Code Guidelines by Extending JDeveloper’s Auditing Framework

Upload: richard-olrichs

Post on 02-Jul-2015

138 views

Category:

Technology


2 download

DESCRIPTION

Presentation about extending the Oracle JDevelopers Auditing Framework. Presentation from OOW14, including the ADF EMG Audit Rules extension.

TRANSCRIPT

Page 1: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Quality Assurance Enforcing Code Guidelines by Extending JDeveloper’s Auditing Framework

Page 2: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

About Us

Richard Olrichs

MN

www.olrichs.nl

@richardolrichs

Wilfred van der Deijl

The Future Group

www.redheap.com

@wilfreddeijl

Page 3: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Agenda

● Audit Profiles and Preferences

● Audit JDeveloper Extension Project

● Creating Custom Rules

● SuppressWarnings

● ADF EMG Audit Rules

● Automated QA

Page 4: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 5: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Aborts Compile On Error

Page 6: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 7: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 8: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 9: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 10: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 11: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 12: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 13: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Custom Rules

Page 14: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Custom Rules

● Setting up JDeveloper Extension

Project

● Implementing Custom Rule

● Implementing Custom Fix

Page 15: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Setting up JDev Extension Project

● Install Extension SDK (Help>CheckForUpdates)

● File > New > Applications >

Extension Application

● extension.xml and MANIFEST.MF

● Bundled as .ZIP

● Can be distributed through custom JDeveloper

Update Center

(aka network drive or URL)

Page 16: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 17: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 18: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 19: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 20: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 21: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Violation Overload

Page 22: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 23: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Violation Overload

● Even ADF Sample Application from OTN

has 157 issues

● Too many violations cause developers to

ignore all of them

Page 24: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Violation Overload

Page 25: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

SuppressWarnings Java Annotation

@SuppressWarnings annotation introduced in

Java 1.5 and tells Java Compiler to suppress

warnings

Page 26: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

SuppressWarnings Java Annotation

JDeveloper 12c now also “listens” to annotation

and suppresses warnings itself (not only javac)

Page 27: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

JDeveloper 12c Suppression Scheme

Why not create our own for non-Java (aka XML)?

Page 28: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Suppress Warnings in XML

Page 29: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Suppress Warnings in XML

Page 30: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 31: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 32: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

ADF EMG Audit Rules

Page 33: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 34: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 35: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 36: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 37: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

ADF Code Guidelines Extension

● JDeveloper extension available today

● ADF Code Guidelines auditing during

development

● Community project at java.net: adfemg-

auditrules

● Contribute and discuss at ADF EMG

● JDeveloper 12c & JDeveloper 11g

Page 38: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Automated QA

Page 39: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

OJAudit

● Command line auditing● JDEV_HOME/jdev/bin/ojaudit -help

● Output in XML/text/HTML or custom xsl

Page 40: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 41: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Automated QA

● Simple solution: Run ojaudit from CI server

and publish output

● Benefit: Same rules during development and

CI QA● @SuppressWarnings and<!--

SuppressWarning--> keep list of

violations short and actionable

Page 42: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Automated QA

SonarQube

Page 43: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 44: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

SonarQube

● Tool to manage Code Quality

● Rules, Violations, Metrics, Test Coverage, etc

● Free Open Source

● Initially Java, but now 20+ languages

● Historical data, thus trends

● Highly extensible through plugins

Page 45: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 46: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 47: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 48: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14
Page 49: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

ADF EMG SonarQube plugin

● SonarQube plugino runs ojaudit

o converts ojaudit output to SonarQube violations

● www.sonarqube.com for base product

● Watch ADF EMG for availability of plugin

● Not specific to ADF, but for any JDev project

● Tested with JDeveloper 12c, but should work

with any version

Page 50: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Summary

● Audit Profiles and Preferences

● Creating Custom Rules

● SuppressWarnings JDev Extension

● ADF EMG Audit Rules Extension

● SonarQube ojaudit plugin

Page 51: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14

Further Reading

● www.olrichs.nlo Index page for Audit Rules

● www.redheap.com

● www.adfemg.orgo Google Groups

● http://docs.oracle.comJDeveloper Doc (not

ADF documentation)o Developing Extensions for JDeveloper

o Java API Reference for Extension SDK

Page 52: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14