PMD - PowerPoint PPT Presentation

1 / 19
About This Presentation
Title:

PMD

Description:

static source code analysis. 11/1/09. http//:www.OsmanMrzljak.com. Page 2 ... Eclipse plugin. Per project een ruleset en workingset. PMD validatie per CU mogelijk ... – PowerPoint PPT presentation

Number of Views:1494
Avg rating:3.0/5.0
Slides: 20
Provided by: Man136
Category:
Tags: pmd | analysis | code | plugin

less

Transcript and Presenter's Notes

Title: PMD


1
PMD
  • static source code analysis

2
PMD communicatie protocol
3
Inleiding
  • Wat is PMD
  • Wat voor soort fouten worden ontdekt
  • Hoe werkt PMD
  • Wat kan PMD voor Webstraat betekenen

4
Wat is PMD
  • JavaSourceCode scanner/static analysis
  • Zoekt naar potentiële problemen
  • Lege try/catch/if etc
  • Niet gebruikte variables
  • Te complexe expressies
  • JCCN, copy/pasta
  • Rapporteert
  • Geeft aan hoe het wel moet

5
Wat voor soort fouten?
  • Current bugs
  • Latent bugs -gt millennium bug
  • Accident-waiting-to-happen bugs
  • Poorly organized bugs

6
Waar is fout
  • 1 public static void main(String args)
  • 2
  • 3 System.out.println(toUpperCase('q'))
  • 4
  • 5
  • 6 private static char toUpperCase(char main)
  • 7
  • 8 return (char) (main - 31)
  • 9

7
Waar is fout 2
  • 1 public static void main(String args)
  • 2
  • 3 System.out.println(toUpperCase('q'))
  • 4
  • 5
  • 6 private static char toUpperCase(char main)
  • 7
  • 8 return (char) (main - 31)
  • 9

8
Hoe werkt PMD
  • Abstract Syntax Tree
  • Rules set
  • Commandline / Ant task
  • Eclipse plugin
  • CPD

9
Abstract Syntax Tree
Java Source
JavaCC
JJTree
AST
EBNF
10
Abstract Syntax Tree 2
CompilationUnit TypeDeclaration
ClassDeclaration UnmodifiedClassDeclaration
ClassBody ClassBodyDeclaration
MethodDeclaration ResultType
MethodDeclarator FormalParameters
Block BlockStatement Statement
StatementExpression
PrimaryExpression PrimaryPrefix
Name .
  • public class Foo
  • public void bar()
  • System.out.println("hello world")

11
Rules
  • Rule is Visitor dat inspecteert AST
  • Rules in Java
  • Xpath rule
  • Built-in rules
  • Ernstigheid level 1 t/m 5

12
Java Rule
// Extend AbstractRule to enable the Visitor
pattern public class EmptyIfStmtRule extends
AbstractRule implements Rule // This method
gets called when there's a Block in the source
code public Object visit(ASTBlock node, Object
data) // If the parent node is an If statement
and there isn't anything // inside the block if
((node.jjtGetParent().jjtGetParent() instanceof
ASTIfStatement) node.jjtGetNumChildren()0)
// then there's a problem, so add a
RuleViolation to the Report RuleContext ctx
(RuleContext)data ctx.getReport().addRuleViolatio
n(createRuleViolation(ctx, node.getBeginLine()))
// Now move on to the next node in the tree
return super.visit(node, data)
13
Xpath rule
  • AST is XML like
  • Maak een Xpath expressie
  • Voorbeeld Korte methode naam

//MethodDeclaratorstring-length(_at_Image) lt 3
14
Built-in rules
  • Basic
  • Naming
  • Unused code
  • Design
  • Code size
  • Coupling
  • Jccn
  • Java beans

15
Commandline / Ant task
  • pmd Unused1.java xml rulesets/unusedcode.xml

lttarget name"pmd"gt lttaskdef name"pmd
classname"net.sourceforge.pmd.ant.PMDTask"/gt
ltpmd rulesetfiles"rulesets/imports.xml,ruleset
s/unusedcode.xml"gt ltformatter type"xml"
toFile"c\pmd_report.xml"/gt ltfileset
dir"C\j2sdk1.4.1_01\src\java\lang\"gt ltinclude
name"/.java"/gt lt/filesetgt lt/pmdgt
lt/targetgt
16
Eclipse plugin
  • Per project een ruleset en workingset
  • PMD validatie per CU mogelijk
  • Level 1 en 2 compile error
  • Level 3 warrning
  • Level 4 en 5 information
  • PMD view
  • CPD
  • AST

17
Wats in it for me?
  • Gebruik van built-in ruleset
  • Webstraat naamgeving conventie
  • Webstraat Standaarden rules maken
  • Project implementatie richtlijnen rules

18
Wats in it for me?2
  • Continue automatisch review doen
  • Fouten worden voorkomen ipv herstelen
  • PMD help ontwikkelaar om rule (afsprak) te
    begrijpen/nakomen.
  • Overzicht van source code kwaliteit.
  • Ruleset blijven uitbreiden op team/wsadproject/pro
    ject/webstraat niveau.

19
Vragen ?
  • Liever niet, ga zelf kijken op http//pmd.sourcefo
    rge.net
Write a Comment
User Comments (0)
About PowerShow.com