enforcing code guidelines by extending jdeveloper’s auditing framework @oow14
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/1.jpg)
Quality Assurance Enforcing Code Guidelines by Extending JDeveloper’s Auditing Framework
![Page 2: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/4.jpg)
![Page 5: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/5.jpg)
Aborts Compile On Error
![Page 6: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/6.jpg)
![Page 7: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/7.jpg)
![Page 8: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/8.jpg)
![Page 9: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/9.jpg)
![Page 10: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/10.jpg)
![Page 11: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/11.jpg)
![Page 12: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/12.jpg)
![Page 13: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/13.jpg)
Custom Rules
![Page 14: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/16.jpg)
![Page 17: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/17.jpg)
![Page 18: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/18.jpg)
![Page 19: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/19.jpg)
![Page 20: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/20.jpg)
![Page 21: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/21.jpg)
Violation Overload
![Page 22: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/22.jpg)
![Page 23: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/24.jpg)
Violation Overload
![Page 25: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/28.jpg)
Suppress Warnings in XML
![Page 29: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/29.jpg)
Suppress Warnings in XML
![Page 30: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/30.jpg)
![Page 31: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/31.jpg)
![Page 32: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/32.jpg)
ADF EMG Audit Rules
![Page 33: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/33.jpg)
![Page 34: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/34.jpg)
![Page 35: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/35.jpg)
![Page 36: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/36.jpg)
![Page 37: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/38.jpg)
Automated QA
![Page 39: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/40.jpg)
![Page 41: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/41.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/42.jpg)
Automated QA
SonarQube
![Page 43: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/43.jpg)
![Page 44: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/44.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/45.jpg)
![Page 46: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/46.jpg)
![Page 47: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/47.jpg)
![Page 48: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/48.jpg)
![Page 49: Enforcing code guidelines by extending JDeveloper’s auditing framework @OOW14](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/49.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/50.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/51.jpg)
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](https://reader035.vdocuments.us/reader035/viewer/2022070322/559436ae1a28aba2628b459f/html5/thumbnails/52.jpg)