Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2023-static-analysis.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Jeanne Boyarsky
July 20, 2023
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2023-static-analysis.pdf
Jeanne Boyarsky
July 20, 2023
More Decks by Jeanne Boyarsky
See All by Jeanne Boyarsky
JavaOne Java 25
boyarsky
0
99
JUnit 6 + exploring the testing ecosystem
boyarsky
0
100
Timeline of a (NYC) FRC Session/Regional
boyarsky
0
74
2025 Toastmasters Path Reference
boyarsky
0
230
2025 Toastmasters Path Changes Update Overview and Reference
boyarsky
0
120
Mentor_Conference_Presentation.pdf
boyarsky
0
61
2025-java-does-what-now.pdf
boyarsky
0
130
Beyond JUnit 5
boyarsky
0
98
Java 21 Certification (or learning new features)
boyarsky
0
170
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Documentation Writing (for coders)
carmenintech
77
5.5k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
My Coaching Mixtape
mlcsv
0
240
Building Applications with DynamoDB
mza
96
7.2k
Optimizing for Happiness
mojombo
378
71k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Visualization
eitanlees
152
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Transcript
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 1 Improving your Code with Static Analysis Tools
Jeanne Boyarsky Thursday, July 20th 2023 UberConf speakerdeck.com/boyarsky https://github.com/boyarsky/2023-uberconf- static-analysis
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky Pause for a Commercial 2 Java certs: 8/11/17
Book giveaway at end!
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 3 Intro
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 4 Identify errors in code without running it
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 5 Brainstorm: what are some things static analysis
can find? •Functionality defects •Anti patterns •Performance issues •Security problems •Coding standard violations
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 6 Static Analysis SAST (Static Application Security Testing)
Coding standards, functionality, etc Security modeling, etc Security static analysis
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 7
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 8 Checkstyle
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 9 Created 2001 Java versions 10.X - Java
11-17 9.X - Java 8 Focus Coding standards Limits One file at a time Languages Java
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 10 Sample Rules
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 11 Sample Report
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 12 Sample Report
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 13 Artifact URL Docs https://checkstyle.sourceforge.io/ GitHub https://github.com/checkstyle/checkstyle/ releases/
Ant Task https://checkstyle.sourceforge.io/ anttask.html Maven Plugin https://maven.apache.org/plugins/maven- checkstyle-plugin Gradle Plugin https://docs.gradle.org/current/userguide/ checkstyle_plugin.html URLs
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 14 •Older tool •“Sun” and Google styles built
in •One file at a time •Not as powerful as others Caveats
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 15 Config
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 16 Output
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 17 Suppressions Can also use xml based excludes
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 18 Custom Rule Demo
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 19 SpotBugs
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 20 Created FindBugs SpotBugs 2006 2016 Java versions
Any? (old docs say 9 but works with 17) Focus Scanning bytecode Languages Java
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 21 FindBugs?
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 22 Sample Rules
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 23 Sample Report
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 24 Artifact URL Main page https://spotbugs.github.io/ Docs https://spotbugs.github.io/
Rules https://spotbugs.readthedocs.io/en/latest/ bugDescriptions.html Ant task https://spotbugs.readthedocs.io/en/ stable/ant.html Maven Plugin https://spotbugs.github.io/spotbugs- maven-plugin/ Gradle Plugin https://plugins.gradle.org/plugin/ com.github.spotbugs URLs
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 25 •Older tool •Support slow - deprecated gradle
code for three versions •Rules can be finnicky •Report kludgy •Docs varying degrees of dated Caveats
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 26 Config
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 27 Output
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 28 Suppressions
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 29 Custom Rule Demo Or bytecode directly if
need to Object size = stack.getStackItem(0).getConstant(); Object str = stack.getStackItem(1).getConstant();
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 30 Custom Rule Demo Couldn’t get Gradle to
recognize it. Docs say to drop in plugin directory/ Eclipse.
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 31 PMD
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 32 Created 2002 Java versions Up to Java
20 Focus Coding issues Add ons Copy paste detection Languages Many
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 33 What does PMD stand for? •Nothing •Retrofitted
Programming Mistake Detector
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 34 Sample Rules
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 35 Sample Report
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 36 Artifact URL Main page https://pmd.github.io/ Docs https://docs.pmd-code.org/latest/
Rules https://pmd.github.io/pmd/ pmd_rules_java.html Ant task https://pmd.github.io/pmd/ pmd_userdocs_tools_ant.html Maven Plugin https://maven.apache.org/plugins/maven- pmd-plugin/ Gradle Plugin https://docs.gradle.org/current/userguide/ pmd_plugin.html URLs
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 37 Config
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 38 Output
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 39 Suppressions
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 40 Custom Rule Demo
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 41 Custom Rule Demo
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 42 Sonar
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 43 Created 2006 Java versions Up to Java
17 Focus Various Company SonarSource Languages Many
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 44 Types •Sonar Lint - IDE •Open source
web app/ scanner •Commercial web app/ scanner •SaaS - https://sonarcloud.io
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 45 Sample Rules
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 46 Sample Report
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 47 Artifact URL Main page https://www.sonarsource.com/products/ sonarqube Docs
https://docs.sonarqube.org/latest/ Rules https://rules.sonarsource.com/java/ Ant task https://docs.sonarqube.org/9.7/analyzing- source-code/scanners/sonarscanner-for- ant/ Maven Plugin https://docs.sonarqube.org/9.7/analyzing- source-code/scanners/sonarscanner-for- maven/ Gradle Plugin https://docs.sonarqube.org/9.7/analyzing- source-code/scanners/sonarscanner-for- gradle/ URLs
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 48 Config
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 49 Suppressions
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky 50 Custom Rule Demo
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky + IDE Support 51
twitter.com/jeanneboyarsky mastodon.social/@jeanneboyarsky Book Giveaway 52