Statická analýza kódu - za kód bez chyb

Podobné dokumenty
Úvod do Groovy pro Java experty

Dynamické programovací jazyky

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Aleš Rybák, Jiří Kadlec. Pluginy budoucnosti

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Quality assurance a testovací nástroje v praxi. Bohumír Zoubek bohumir.zoubek@profinit.eu

Nástroje pro průběžnou integraci a testování

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

JAVA Unit testing Java, zimní semestr

ANALÝZA A NÁVRH ŘEŠENÍ PRO

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

MBI - technologická realizace modelu

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Formy komunikace s knihovnami

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Úvod. Leden Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 22

Platformy / technologie. Jaroslav Žáček

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Platformy / technologie. Jaroslav Žáček

Webové programování je CHALENGE! Milan Čapoun, Samuel Šramko

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Dotazování nad stromem abstraktní syntaxe

Web frameworks v praxi

Selenium, Emma, Checkstyle. Jiří Mach

Testovací metoda. Testovací metoda. public class SimpleTest {

Nové vývojové nástroje i5/os Rational Developer for System i V7.1

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Novinky ve Visual Studio Tomáš Kroupa

programátor vs. vývojář

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

Testování použitelnosti co to obnáší

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

RUP - Disciplíny. Jaroslav Žáček jaroslav.zacek@osu.cz

Tvorba informačních systémů

Proces vývoje HRIS Vema (Human Resources Information System) Jaroslav Šmarda

MATURITNÍ PRÁCE dokumentace

PA165: Úvod do Java EE. Petr Adámek

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

IBA CZ průmyslový partner FI MU

Převod 4GL aplikací do webového prostředí. Ing. Jan Musil, IBM ČR Community of Practice for

1 Nástroje pro správu verzí. 1.1 Pojmy:

Část 1 Moderní JavaScript

Architektury informačních systémů

Architektury informačních systémů

Gradle.

<Insert Picture Here> Vývoj portálových řešení v Javě

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

IBA CZ průmyslový partner FI MU

Specifikace. Odevzdání do

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Project management. Příprava projektu Zahájení High level plánování. Vykonávání Detailní plánování Vykonávání Řízení a monitorování

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Programátorská příručka

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Olga Rudikova 2. ročník APIN

Úvod do programování v jazyce Java

WPA - Konfigurace Java EE aplikace (Maven, struktura war arch. kontejnerem Tomcat 8

Profil firmy. PSE. Intelligent Net Working. ANF DATA spol. s r.o. Siemens IT Solutions and Services PSE

Vývoj aplikací řízený testy. Miroslav Beneš

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

Využití modelovacích nástrojů ve vývojářské firmě

Úvod do programovacího jazyka Python

Databáze EMS podacích lístků

Mgr. Jan Folbrecht Senior softwarový inženýr, softwarový architekt, manažer

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

DATAMINING SEWEBAR CMS

Michal Podzimek

NetFlow a NBA? FlowMon 7 umí mnohem více! (NPM, APM, VoIPM, packet capture) Petr Špringl springl@invea.com

Efektivní recruitment na sociálních sítích

SonarQube - statická analýza kódu a její zapojení v CI. Babu Červenková Big Data developer - Java Fulltext - Robot tým

Diagnostika webových aplikací v Azure

Tvorba informačních systémů

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Úvod do programovacího jazyka Python

Řízení reálných projektů, agilní metodiky

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

Jak ochráníte svoji síť v roce 2015? Michal Motyčka

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc

UŽIVATELSKÉ ŠKOLENÍ LOTUS NOTES

ActionScript nepodporuje specifické objekty browseru, jako Document, Window a Anchor.

Server-side technologie pro webové aplikace

Web Services na SOAP

Zabezpečení webové vrstvy a EJB projektu Část nastavení specifická pro Glassfish, část dána Java EE

Technologie Java. Jaroslav Žáček

Vývoj informačních systémů. Přehled témat a úkolů

Znalostní systém nad ontologií ve formátu Topic Maps

Groovy agilní Java. Pavel Kříž Filip Malý

Architektura aplikace

Tvorba přizpůsobivých webových rozhraní

3. Základy programovacího jazyka Java

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Transkript:

Statická analýza kódu - za kód bez chyb Václav Pech Senior Software Developer JetBrains, Inc.

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ší 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 3

Příklad 1 Neznámý programátor 4

Příklad 2 Václav Pech, 2004 5

Příklad 3 Maven 2.0.x SNAPSHOT 6

Příklad 4 Nejmenovaný programátor u JetBrains 7

Příklad 5 Václav Pech, 2005 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 9

Poznej svého nepřítele Bad practice Correctness Internationalization Malicious code vulnerability Multithreaded correctness Performance Code style violations Dodgy (Bill Pugh, FindBugs) 10

Bad practice 11

Correctness 12

Internationalization 13

Malicious code vulnerability 14

Multithreaded correctness 15

Performance 16

Code style violations 17

Dodgy 18

Nástroje pro detekci chyb v kódu Debugger Profiler Unit tests Code revisions Formal revisions Pair programming Static code analysis 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 20

On-demand analýza Generuje reporty o nalezených chybách 21

On-the-fly analýza Upozorňuje na chyby přímo v editoru 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 23

Příklady dostupných nástrojů IntelliJ IDEA TPTP plugin for Eclipse FindBugs Checkstyle PMD AppPerfect Code Analyzer Fortify focused on security 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 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 26

TPTP Open source Integrován do Eclipse Více než 100 patternů (včetně JDT) Custom bug patterny Pouze pro Java kód 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 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 29

Příklad 6 30

Další formáty Java in JSPs JavaScript CSS, HTML, XML GWT Struts Java EE code Java ME code 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 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 33

Inspection annotations Příklad 1 34

Inspection annotations Příklad 2 35

Inspection annotations Příklad 3 36

Inspection annotations Příklad 4 37

Pusťte se do hledání chyb IntelliJ IDEA Eclipse TPTP plugin FindBugs plugin NetBeans SQE plugin FindBugs, PMD, CheckStyle, Lint4J 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 39

Otázky 40