Statická analýza kódu
Transkript
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
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...
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,...
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...
Úvod do Groovy pro Java experty
Úvod do Groovy pro Java experty
Václav Pech
Senior Software Developer
JetBrains, Inc.
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...
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í
...
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
...
[email protected] (+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...
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...