Top Banner
IntelliJ IDEA Static Code Analysis Hamlet D'Arcy Canoo Engineering AG @HamletDRC http://hamletdarcy.blogspot.com
56

IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

Mar 09, 2018

Download

Documents

vodang
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: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

IntelliJ IDEA Static Code Analysis

Hamlet D'ArcyCanoo Engineering AG

@HamletDRChttp://hamletdarcy.blogspot.com

Page 2: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

2www.jetbrains.com/idea

Static Code Analysis

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

Page 3: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

3www.jetbrains.com/idea

About Me

Page 4: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

4www.jetbrains.com/idea

Static Code Analysis

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

Page 5: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

5www.jetbrains.com/idea

class _01Example {

private static long count = 0L;

public synchronized void increment() { count++; }}

Page 6: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

6www.jetbrains.com/idea

class _02Example {

private boolean active = false;

public boolean isActive() { return active; }

public synchronized void activate() { active = true; }}

Page 7: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

7www.jetbrains.com/idea

class _03Example {

private final ReentrantLock lock = new ReentrantLock();

private boolean active = false;

public boolean isActive() throws Exception {

lock.lock();

boolean result = active;

lock.unlock();

return result;

}

public void activate() {

lock.lock();

active = true;

lock.unlock();

}

}

Page 8: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

8www.jetbrains.com/idea

class _04Example { private static final boolean DEFAULT = true;

void myMethod(Boolean value) { if (value == null) System.out.println("value: null"); value = DEFAULT;

System.out.println("received: " + value); }}

Page 9: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

9www.jetbrains.com/idea

class _05Example {

Frame makeFrame(int height, int width) {

Frame frame = new Frame(); frame.setSize(height, width); return frame; }

Rectangle makeRectangle() { int x = 0; int y = 0; return new Rectangle(y, x, 20, 20); }}

Page 10: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

10www.jetbrains.com/idea

class _06Example {

{

try {

doSomething();

} catch (UnsupportedOperationException e) {

handleError(e); } catch (IllegalStateException e) {

handleError(e);

} catch (IllegalArgumentException e) {

handleError(e);

}

} ...

}

Page 11: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

11www.jetbrains.com/idea

class _07Example {

private def Object lock = new Object()

def method() {

synchronized(lock) {

// do something }

}

}

Page 12: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

12www.jetbrains.com/idea

class _08Example {

var property: String = null

def getProperty() {

println(property)

}}

Page 13: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

13www.jetbrains.com/idea

CorrectnessMulti-threaded correctnessMalicious code vulnerabilityBad practiceInternationalizationPerformanceCode style violationsDodgy

* Bill Pugh, FindBugs

Page 14: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

14www.jetbrains.com/idea

… and more• Suppress False Positives• Define profiles and scopes• Run on demand• Run from command line• Team City integration• FindBugs, PMD & CheckStyle plugins• Language and framework support...

Page 15: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

15www.jetbrains.com/idea

Supported FrameworksAndroidAnt Application Server InspectionsCDI(Contexts and Dependency Injection) CSSFaces ModelFreeMarker Google App Engine, Google Web ToolkitGroovyGuice Hibernate HTMLJ2MEJava EEJavaScript

JSFJSPJunitLESSMavenOSGiRELAX NGSCSSSpring ModelSpring Web ServicesSQLTestNGVelocity Java WebServicesWebflow ModelWSDL XMLXpathXSLT... and many more

Page 16: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

16www.jetbrains.com/idea

Write Your Own

IntelliJ IDEA Static Analysis: Custom Rules with Structural Search & Replace

On http://JetBrains.tv

Page 17: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

17www.jetbrains.com/idea

10 Best Unknown Inspections• Illegal package

dependencies• 'this' reference escapes

constructor• Field accessed in both

synched & unsynched contexts

• non private field accessed in synched context

• Synchronization on 'this' and 'synchronized' method

• return of collection or array field

• call to 'Thread.run()'• expression.equals("literal")

rather than "literal".equals(expression)

• equals method does not check class of parameter

• method may be static

http://hamletdarcy.blogspot.com/2008/04/10-best-idea-inspections-youre-not.html

Page 18: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

18www.jetbrains.com/idea

How it Works• Searches AST for Bug Patterns

Page 19: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

19www.jetbrains.com/idea

How it Works@Overridepublic void visitMethod(@NotNull final PsiMethod method) {

super.visitMethod(method);

if (method.hasModifierProperty(PsiModifier.ABSTRACT)) {

return;

}

if (!RecursionUtils.methodMayRecurse(method)) {

return;

}

if (!RecursionUtils.methodDefinitelyRecurses(method)) {

return;

}

super.registerMethodError(method);

}

Page 20: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

20www.jetbrains.com/idea

Static Code Analysis

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

Page 21: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

21www.jetbrains.com/idea

@Immutable and @GuardedBy@Immutablepublic class GuardedByExample {

private final Object lock = new Object();

@GuardedBy("lock") private final List<Object> myList = new ArrayList<Object>();

public Object getElement(int index) { synchronized (lock) { return myList.get(index); } }

public void addElement(Object e) { synchronized (lock) { myList.add(e); } }}

Page 22: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

22www.jetbrains.com/idea

@Nullable and @NotNullpublic class NullableExample { @Nullable Integer getId() { return 1; }

@NotNull String getName() { return "name"; } @Override public String toString() { if (getName() == null) { return getId().toString() + "<unknown>"; } else { return getId().toString() + getName(); } }}

Page 23: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

23www.jetbrains.com/idea

@Pattern

class PatternExample {

@Pattern("[a-zA-Z]+") String getName() { return "my name"; }}

Page 24: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

24www.jetbrains.com/idea

@Language

public class LanguageExample {

@Language("Groovy") String getScript() { return "5.times { i -> println \"Hello $i\" } "; }

String getMarkup() { @Language("XML") String markup = "<root><body>Some Text</body></root>"; return markup; }}

Page 25: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

25www.jetbrains.com/idea

@Nls, @NonNls, @PropertyKey

• Resource bundle & i18n integration

• Extracting hard-coded String literals: http://goo.gl/VZDln

• Documentation: http://goo.gl/NWzsv

Page 26: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

26www.jetbrains.com/idea

Static Code Analysis

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

Page 27: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections
Page 28: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections
Page 29: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

29www.jetbrains.com/idea

Duplicate Detection• Anonymizes Local Variables, Fields,

Methods, Types, and Literals• Provides weighted/scored analysis• Supports several languages

• More info: http://goo.gl/qmhhd

Page 30: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

30www.jetbrains.com/idea

Static Code Analysis

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

Page 31: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections
Page 32: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections
Page 33: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

33www.jetbrains.com/idea

Analyze Stacktrace• Copy and paste log files into IDEA• ZKM Unscramble support (& others)

• More Info: http://goo.gl/A8i87

Page 34: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

34www.jetbrains.com/idea

Static Code Analysis

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

Page 35: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections
Page 36: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections
Page 37: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

37www.jetbrains.com/idea

Dataflow Analysis• Code archeology

• to here – how a reference gets set• from here – where a reference goes to

• More info: http://goo.gl/Cp92Q

Page 38: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

38www.jetbrains.com/idea

Static Code Analysis

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

Page 39: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections
Page 40: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections
Page 41: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

41www.jetbrains.com/idea

UML Generation• Dynamically generates diagram• Standard Show/Hide options• Integrated with Refactorings

Dependency Analysis• Shows all classes your code depends on• Shows specific usages in your classes• Allows jump to source

Page 42: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

42www.jetbrains.com/idea

Dependency Structure Matrix• Analyzes structure of complex projects• Shows module, package, class

dependencies• Shows cyclic & backwards dependencies• Helps eliminate illegal dependencies

Page 43: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

43www.jetbrains.com/idea

Classes on top depend-on classes below

Page 44: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

44www.jetbrains.com/idea

CalculatorFacade uses: – Conversions, OperationsFactory & BinaryOperation

* le click *

Page 45: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

45www.jetbrains.com/idea

CalculatorFacade is used by– CalculatorServlet & FPCalculatorServlet

Page 46: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

46www.jetbrains.com/idea

BinaryOperation is used 4 times by Facade

– Darker color == more dependencies

Green shows who BinaryOperation is “used by”

Yellow shows who BinaryOperation “uses”

* le click *

Page 47: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

47www.jetbrains.com/idea

Cyclic Dependencies can be highlightedModules can be collapsed/expanded

Page 48: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

48www.jetbrains.com/idea

Dependency Structure Matrix• Demos on JetBrains site & booth

• Feature Overview: http://goo.gl/0bcz3• JetBrains Blog Post: http://goo.gl/fdj26• Canoo Blog Post: http://goo.gl/M1hTY

Page 49: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

49www.jetbrains.com/idea

Static Code Analysis

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

Page 50: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

50www.jetbrains.com/idea

Software Lifecycle

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

Page 51: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

51www.jetbrains.com/idea

Software Lifecycle

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

every second

every second

Page 52: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

52www.jetbrains.com/idea

Software Lifecycle

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

every debug

every debug

every debug

Page 53: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

53www.jetbrains.com/idea

Software Lifecycle

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

every build

Page 54: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

54www.jetbrains.com/idea

Software Lifecycle

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis

every day

Page 55: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

55www.jetbrains.com/idea

Software Lifecycle

Code InspectionsJSR 305 and 308 AnnotationsDuplicate DetectionStack Trace AnalysisDataflow AnalysisDependency Analysis every release

Page 56: IntelliJ IDEA Static Code Analysis - 33rd Degree33degree.org/pdf/HamletDArcyStaticAnalysisInIDEA.pdf · JSF JSP Junit LESS Maven OSGi RELAX NG ... Software Lifecycle Code Inspections

56www.jetbrains.com/idea

Learn More – Q & A• My JetBrains.tv Screencasts: http://tv.jetbrains.net/tags/hamlet• My IDEA blog: http://hamletdarcy.blogspot.com/search/label/IDEA• Work's IDEA blog: http://www.canoo.com/blog/tag/idea/• Main blog: http://hamletdarcy.blogspot.com• YouTube channel: http://www.youtube.com/user/HamletDRC• Twitter: http://twitter.com/hamletdrc• IDEA RefCard from DZone: http://goo.gl/Fg4Af• IDEA Keyboard Stickers: JetBrains Booth

• Share-a-Canooie – http://people.canoo.com/share/• Hackergarten – http://www.hackergarten.net/