Statická analýza kódu

Transkript

Statická analýza kódu
Statická analýza kódu za kód bez chyb
Václav Pech
Senior Software Developer
JetBrains, Inc.
www.jetbrains.com
Něco o mě
• Václav Pech
– Zhusta chybující programátor 8 let
– Vděčný uživatel nástrojů pro analýzu kódu
3 roky
• JetBrains
– Dodavatel nástrojů pro vývojáře
• IntelliJ IDEA, TeamCity, ReSharper, a další
www.jetbrains.com
2
Něco o prezentaci
•
•
•
•
1. Chyby v kódu
2. On-demand analýza
3. On-the-fly analýza
4. Pro starší a pokročilé
• Otázky a odpovědi
•
POZOR!: Během prezentace bude ukazován a editován kód
www.jetbrains.com
3
Příklad 1
Neznámý programátor
www.jetbrains.com
4
Příklad 2
Václav Pech, 2004
www.jetbrains.com
5
Příklad 3
Maven 2.0.x SNAPSHOT
www.jetbrains.com
6
Příklad 4
•
Nejmenovaný programátor u JetBrains
www.jetbrains.com
7
Příklad 5
Václav Pech, 2005
www.jetbrains.com
8
Situace
• Všichni vývojáři občas dělají chyby
• Chyby jsou i ve známých a velmi
rozšířených knihovnách a nástrojích
• Většina chyb jsou triviality
www.jetbrains.com
9
Poznej svého nepřítele
•
•
•
•
•
•
•
•
Bad practice
Correctness
Internationalization
Malicious code vulnerability
Multithreaded correctness
Performance
Code style violations
Dodgy
(Bill Pugh, FindBugs)
www.jetbrains.com
10
Bad practice
www.jetbrains.com
11
Correctness
www.jetbrains.com
12
Internationalization
www.jetbrains.com
13
Malicious code vulnerability
www.jetbrains.com
14
Multithreaded correctness
www.jetbrains.com
15
Performance
www.jetbrains.com
16
Code style violations
www.jetbrains.com
17
Dodgy
www.jetbrains.com
18
Nástroje pro detekci chyb v kódu
•
•
•
•
Debugger
Profiler
Unit tests
Code revisions
– Formal revisions
– Pair programming
• Static code analysis
www.jetbrains.com
19
Statická analýza kódu
• Detekuje chyby v kódu staticky na
základě hledání chybových vzorů
– Abstract Syntax Tree
• Analyzuje zdrojový kód, nebo bytecode
• Integruje s IDEčky, Antem, Mavenem či
CI servery
www.jetbrains.com
20
On-demand analýza
• Generuje reporty o nalezených chybách
www.jetbrains.com
21
On-the-fly analýza
• Upozorňuje na chyby přímo v editoru
www.jetbrains.com
22
Pokročilé vlastnosti
• Konfigurace hledaných chyb a jejich
závažnosti pomocí profilů
• Možnost potlačení (suppress) hlášení
• Exportování reportů pro jejich off-line
prohlížení a mining
www.jetbrains.com
23
Příklady dostupných nástrojů
•
•
•
•
•
•
•
IntelliJ IDEA
TPTP plugin for Eclipse
FindBugs
Checkstyle
PMD
AppPerfect Code Analyzer
Fortify – focused on security
www.jetbrains.com
24
IntelliJ IDEA
•
•
•
•
•
Analýza integrovaná do IDE
Přes 700 hledaných chybových vzorů
Custom bug patterny
Profile management
Suppression pomocí anotací
• Analýza závislostí, DSM
• Detekce duplicit v kódu
www.jetbrains.com
25
FindBugs
•
•
•
•
•
•
Open source – Bill Pugh, Univ. Of Maryland
Integruje do Eclipse a NetBeans
Custom bug patterny v Javě
Propracovaná správa reportů a historie chyb
Analyzuje byte-code
Přes 300 hledaných chybových vzorů
• Nemá quick-fixy
• Pouze pro Java kód
www.jetbrains.com
26
TPTP
•
•
•
•
Open source
Integrován do Eclipse
Více než 100 patternů (včetně JDT)
Custom bug patterny
• Pouze pro Java kód
www.jetbrains.com
27
CheckStyle
•
•
•
•
•
Open source
Integruje se všemi zmiňovanými IDE
Custom bug patterny v Javě
Okolo 100 patternů
Zaměřen na problémy stylu
– Java and EJB 2.x
• Detekce duplicit v kódu
• Nemá quick fixy
• Pouze pro Java kód
www.jetbrains.com
28
PMD
•
•
•
•
•
•
Open source
Integruje se všemi zmiňovanými IDE
Custom bug patterny v Javě a XPath
Okolo 200 patternů v Javě, JSP, JSF
Suppression pomocí anotací
Detekce duplicit v kódu
• Nemá quick fixy
www.jetbrains.com
29
Příklad 6
www.jetbrains.com
30
Další formáty
•
•
•
•
•
•
•
Java in JSPs
JavaScript
CSS, HTML, XML
GWT
Struts
Java EE code
Java ME code
www.jetbrains.com
31
Custom bug patterny
• Možnost definovat vlastní vzory pro
detekci porušení specifických pravidel
daného projektu či domény
• Příklady:
– Volání určité metody
– Vytvoření určité třídy
– další
• Někdy je vhodné definovat rovněž
quick fixy
www.jetbrains.com
32
Inspection annotations
•
•
•
•
@Nullable, @NotNull
@Nls, @NonNls
@PropertyKey
@Pattern, @Language
•
•
•
•
@Nonnegative, @Signed
@Tainted, @Untainted
@ThreadSafe, @GuardedBy
JSR 305 and 308
– Expert group zahrnuje rovněž vývojáře
FindBugs and IntelliJ IDEA
www.jetbrains.com
33
Inspection annotations – Příklad 1
www.jetbrains.com
34
Inspection annotations – Příklad 2
www.jetbrains.com
35
Inspection annotations – Příklad 3
www.jetbrains.com
36
Inspection annotations – Příklad 4
www.jetbrains.com
37
Pusťte se do hledání chyb
• IntelliJ IDEA
• Eclipse
– TPTP plugin
– FindBugs plugin
• NetBeans
– SQE plugin
• FindBugs, PMD, CheckStyle, Lint4J
www.jetbrains.com
38
Shrnutí
• Statická analýza kódu zamete s chybami
– On-demand
– On-the fly
• Výborný doplněk dalších metod
• Dostupná pro všechna IDE
www.jetbrains.com
39
Otázky
www.jetbrains.com
40

Podobné dokumenty

Přehled konverzačních témat a dní výuky s rodilým mluvčím

Přehled konverzačních témat a dní výuky s rodilým mluvčím 30.5.2011 Mon – Bad Jokes – Telling Jokes, Puns 1.6.2011 Wed – To Which Tribe Do You Belong? – Fashion, Speaking 6.6.2011 Mon – Dodgy Dilemmas – Punishments, Speaking 8.6.2011 Wed – The real Cost o...

Více

Pokročilé techniky automa- tického testování v

Pokročilé techniky automa- tického testování v • Podpora pro testování ve Spring Frameworku 2.5 • Techniky a patterny testování různých vrstev aplikace - Data layer: database sandbox, automatic database model setup / update, database interface,...

Více

Michal Utíkal, M.E.

Michal Utíkal, M.E.  Vývoj webové aplikace pro vyhodnocování průzkumů veřejného mínění (ASP.NET MVC, SQL, Entity Framework, Linq, jQuery, Bootstrap, Web Services,…)  Nástroje: VS 2013, SQL Source, Git, Jira, Resharp...

Více

Úvod do Groovy pro Java experty

Úvod do Groovy pro Java experty Úvod do Groovy pro Java experty Václav Pech Senior Software Developer JetBrains, Inc.

Více

Teoretická východiska deduktivních databází

Teoretická východiska deduktivních databází Všeobecně jsou známy vlastností transakcí, označované jako ACID (atomicity, consistency, isolation, durability). Databázové objekty jsou strukturovány do perzistentních tříd, které jsou organizován...

Více

Nástroje pro vývoj aplikací a jejich vazba na CASE

Nástroje pro vývoj aplikací a jejich vazba na CASE v budoucích dokumentech. Ten směřoval k tomu, zda je možné pro vývoj aplikací používat SaaS nástroje a v jakém stavu je jejich aktuální nabídka. Mimo jiné i proto, že se jedná se o velice aktuální ...

Více

Nástroje pro vývoj aplikací a jejich vazba na CASE

Nástroje pro vývoj aplikací a jejich vazba na CASE JCreator může být o něco svižnější, než jeho kolegové, nicméně na jiné platformě než Windows jej nespustíte, protože se tvůrci neobtěžovali s verzemi pro další platformy. V době malých disků mohla ...

Více

[email protected] (+420) 773 400084

milan.karasek@algomica.cz (+420) 773 400084 Banking 2010 – 2013; total allocation 2 years 2 months customers: Profinit, Ceska Sporitelna - Designer (technical design) of new features of internet banking, definition of new proceses of analysi...

Více

Anotace a Hibernate

Anotace a Hibernate zápis mapování přímo ve zdrojovém kódu => při refactoringu si aplikace snáze zachová aktuálnost OR mapování jsou součástí byte kódu a čtou se za běhu pomocí reflexe => není potřeba žádný externí XM...

Více