Nástroje pro pokrytí kódu Java - Java code coverage tools
Nástroje pro pokrytí kódu Java jsou dva typy: za prvé, nástroje, které přidávají příkazy do Jáva zdrojový kód a požadovat jeho rekompilaci. Za druhé, nástroje, které jsou nástrojem bytecode, před nebo během provádění. Cílem je zjistit, které části kódu jsou testovány registrací řádků kód spuštěn při provádění testu.
JCov
Vývojáři | Leonid Arbouzov, Alexander Petrov, Vladimir Generalov, Serguei Chukhontsev, Oleg Uliankin, Gregory Steuck, Pavel Ozhdikhin, Konstantin Bobrovsky, Robert Field, Alexander Kuzmin, Leonid Mesnik, Sergey Borodin, Andrey Titov, Dmitrij Fazunenko, Alexey Fedorchenko, Leonid Kuskov |
---|---|
Stabilní uvolnění | 3.0 / 1. září 2014 |
Typ | Pokrytí kódu |
Licence | GPL v2 (s výjimkou Classpath) |
webová stránka | wiki |
JCov je nástroj, který byl vyvinut a používán se Sun JDK (a později Oracle JDK) od samého začátku Javy: od verze 1.1. JCov je schopen měřit a reportovat Jáva pokrytí kódu. JCov je distribuován v souladu s podmínkami Veřejná licence GNU (verze 2, s výjimkou Classpath). JCov se stal open-source jako součást projektu kódových nástrojů OpenJDK v roce 2014.
Funkce
JCov je schopen hlásit následující typy pokrytí kódem:
- Blokovat pokrytí
- Pokrytí linky
- Pokrytí pobočky
- Pokrytí metody
JCov implementuje dva různé způsoby, jak ukládat shromážděná data:
- Do souboru v souborovém systému
- Na server (neboli „síťový grabber“)
JCov funguje instrumentováním bajtkódu Java pomocí dvou různých přístupů:
- Statické vybavení, které se provádí předem, změna testovaného kódu
- Dynamické vybavení, které se provádí za běhu pomocí agenta Java
JCov má několik dalších charakteristických rysů, které zahrnují mimo jiné:
- Pokrytí pole
- Abstraktní pokrytí API
- Přímé / nepřímé pokrytí
- Informace o pokrytí jednotlivých testů (neboli „testovací váhy“)
- Veřejné API a SPI, které umožňují implementovat vlastní filtrování a / nebo těžbu dat pokrytí
Nástroje používající JCov
- Oracle JDK (SE a ME)
- JCK (sada Java Compatibility Kit)
- Různé TCK Java SE a Java ME
- Sada Java FX SDK
- Tvůrce scén Java FX
JaCoCo
Vývojáři | Marc Hoffmann, Brock Janiczak, Evgeny Mandrikov, Mirko Friedenhagen |
---|---|
Stabilní uvolnění | 0.8.6 / 15. září 2020 |
Typ | Pokrytí kódu |
Licence | EPL |
webová stránka | www |
JaCoCo je open-source sada nástrojů pro měření a vykazování Jáva pokrytí kódu. JaCoCo je distribuován v souladu s podmínkami Veřejná licence Eclipse. Byl vyvinut jako náhrada za EMMA,[1] pod záštitou zásuvného modulu EclEmma pro Eclipse.
Funkce
JaCoCo nabízí pokyny, pokrytí linek a poboček.
Na rozdíl od Atlassian Clover a OpenClover, které vyžadují vybavení zdrojového kódu, může JaCoCo vybavit bajtový kód Java pomocí dvou různých přístupů:
- jako JCov za běhu při spuštění kódu pomocí agenta Java[2]
- jako Cobertura a JCov před provedením (offline)
A může být nakonfigurován tak, aby ukládal shromážděná data do souboru, nebo je odesílal přes TCP. Soubory z více běhů nebo částí kódu lze snadno sloučit.[3] Na rozdíl od Cobertury a EMMA plně podporuje Java 7, Java 8,[4] Java 9, Java 10, Java 11, Java 12, Java 13, Java 14 a Java 15.
Nástroje využívající nebo zahrnující JaCoCo
- Plugin SonarQube JaCoCo - jeden z výchozích nastavení pro analýzy pokrytí v rámci platformy pro správu kvality kódu SonarQube
- EclEmma Eclipse (software) Doplněk Code Coverage Plugin, byl dříve založen na EMMA[5]
- Jenkins Plugin JaCoCo[6]
- Netbeans Podpora JaCoCo[7]
- IntelliJ IDEA od v11[4]
- Gradle Plugin JaCoCo[8]
- Visual Studio Team Services[9]
- TeamCity[10]
- Razítko (https://www.stamp-project.eu/ )[11]
OpenClover
Vývojáři | Marek Parfianowicz, Grzegorz Lewandowski |
---|---|
Stabilní uvolnění | 4.4.1 / 11. října 2019 |
Typ | Pokrytí kódu |
Licence | Licence Apache 2.0 |
webová stránka | otevřený jetel |
OpenClover je bezplatný a open-source nástupce Atlassian Clover, vytvořený jako Vidlička ze základny kódu Clover vydané společností Atlassian v roce 2017. Obsahuje všechny funkce původního Clover (serverové vydání). Projekt OpenClover je veden vývojáři, kteří udržovali Clover v letech 2012–2017.[12]
OpenClover používá techniku instrumentace zdrojového kódu a zpracovává Javu, Báječný a AspectJ jazyky. Mezi jeho funkce patří: jemné ovládání rozsahu měření pokrytí, optimalizace testů a sofistikované zprávy.
OpenClover se integruje s Mravenec, Maven, Gradle, Grály, Zatmění, IntelliJ IDEA, Bambus, Jenkins, Hudson, Griffon, SonarQube a AspectJ.
Cobertura
Vývojáři | Steven Christou |
---|---|
Stabilní uvolnění | 2.1.1 / 26. února 2015 |
Úložiště | github |
Typ | Pokrytí kódu |
Licence | GPL 2.0 |
webová stránka | cobertura |
Cobertura je open-source nástroj pro měření pokrytí kódu. Činí tak instrumentováním bajtového kódu.
Klid
Vývojáři | Michael Couck |
---|---|
Stabilní uvolnění | 1.0 / 8. prosince 2013 |
Typ | Pokrytí kódu |
Licence | Softwarová licence Apache verze 2.0 |
webová stránka | wiki |
Klid je open-source sada nástrojů pro měření a vykazování Jáva pokrytí kódu. Stejně jako pokrytí se měří hlavní metriky kódu: - cyklometrická složitost, stabilita, abstraktnost a vzdálenost od hlavní. Data sestavy jsou uchována do databáze objektů a jsou dostupná prostřednictvím Jenkins / Hudson. Rozhraní vizuálně replikuje rozhraní Eclipse IDE.
Serenity dynamicky vylepšuje bajtový kód, takže krok po kompilaci není nutný. Projekty Ant a Maven jsou podporovány. Konfigurace se provádí v xml, příklad Ant by byl:
<!-- Serenity system properties. --> klíč ="included.packages" hodnota =„your.package.name.here“ /> klíč ="included.adapters" hodnota ="pokrytí, složitost, závislost" /><!-- Serenity JVM command line. --> řádek ="-javaagent: serenity / serenity.jar" />
Příklad konfigurace Maven by byl:
<properties><included.packages>-Dincluded.packages = your.package.name.here</included.packages><included.adapters>-Dincluded.adapters = pokrytí, složitost, závislost</included.adapters></properties><argLine>-javaagent: serenity / serenity.jar -Xms512m -Xmx1024m $ {included.packages} $ {included.adapters}</argLine>
Úplný příklad konfigurace najdete na Jenkinsově wiki na adrese https://wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin.
Jsou podporováni Jenkinsovi otroci i vícemodulové projekty Maven.
Testwell CTC ++ pro Javu
Vývojáři | Technologie Verifysoft |
---|---|
Stabilní uvolnění | 8.0. / 30. června 2016 |
Typ | Pokrytí kódu |
Licence | Proprietární |
webová stránka | Verifikujte software |
Testwell CTC ++ je pokrytí kódu nástroj pro C, C ++, Jáva a C#. Vývoj tohoto nástroje byl zahájen v roce 1989 ve finské společnosti Testwell. Od roku 2013 pokračuje v podpoře a vývoji společnost Verifysoft Technology ze společnosti Offenburg, Německo. Testwell CTC ++ analyzuje všechny úrovně pokrytí kódu až Upravený stav / pokrytí rozhodnutí a vícenásobné krytí.[13] Nástroj funguje se všemi překladače.[14]
Agent pro pokrytí kódu IntelliJ IDEA
Vývojáři | JetBrains |
---|---|
Typ | Pokrytí kódu |
Licence | Apache 2.0 |
webová stránka | github |
Agent pro pokrytí kódu IntelliJ IDEA je pokrytí kódu nástroj integrovaný do IntelliJ IDEA IDE a TeamCity CI serveru. Podporuje pokrytí větví a sledování pokrytí za test.
Pozoruhodné historické nástroje
Jetel
Vývojáři | Atlassian |
---|---|
Stabilní uvolnění | 4.1.2 / 11. října 2016 |
Typ | Pokrytí kódu |
Licence | Apache 2.0 |
webová stránka | atlassian |
Jetel je Java pokrytí kódu analytický nástroj koupil a dále rozvíjel Atlassian. V dubnu 2017 Atlassian oznámil konec životnosti Cloveru a zároveň jej otevřel pod licencí Apache 2.0.
Clover používá techniku instrumentace zdrojového kódu (na rozdíl od Cobertury a JaCoCo, které používají instrumentaci bajtového kódu), která má své výhody (například schopnost shromažďovat metriky kódu) a nevýhody (je nutná opětovná kompilace zdrojů).[15] Mezi jeho funkce patří historické zprávy, obrovská kontrola nad procesem shromažďování pokrytí, sada nástrojů příkazového řádku a rozhraní API pro starší integraci a další.
Clover také umožňuje zkrácení doby testování pouze spuštěním testů, které pokrývají kód aplikace, který byl od předchozího sestavení upraven. Tomu se říká optimalizace testu[16] a může vést k obrovským poklesům času stráveného čekáním na dokončení automatických testů.
Clover přichází s řadou integrací vyvinutých společností Atlassian (Ant, Maven, Grails, Eclipse, IDEA, Bamboo) a komunitou open source (Gradle, Griffon, Jenkins, Hudson, Sonar).
V dubnu 2017 společnost Atlassian oznámila, že již nebude vydávat nové verze Clover po verzi 4.1.2, a její kód byl zpřístupněn jako open-source software hostováno dne Bitbucket.[17][18]
EMMA
Vývojáři | Vlad Roubtsov |
---|---|
Stabilní uvolnění | 2.1 / 13. května 2005 |
Úložiště | sourceforge |
Typ | Pokrytí kódu |
Licence | Společná veřejná licence 1.0 |
webová stránka | emma |
EMMA je open-source sada nástrojů pro měření a vykazování Jáva pokrytí kódu. EMMA je distribuována za podmínek Společná veřejná licence v1.0.
EMMA není v současné době v aktivním vývoji; poslední stabilní vydání proběhlo v polovině roku 2005. Jako náhrada byl vyvinut JaCoCo.[19]EMMA funguje tak, že každý řádek kódu a každou podmínku zabalí příznakem, který se nastaví při spuštění tohoto řádku.[20]
Funkce
- třídy nástrojů pro pokrytí buď offline (před načtením), nebo za běhu (pomocí nástroje pro načítání tříd přístrojů).
- Podporované typy pokrytí: třída, metoda, linka, základní blok. EMMA dokáže detekovat, kdy je jeden řádek zdrojového kódu pokryt pouze částečně.
- Statistiky pokrytí jsou agregovány na úrovni metod, tříd, balíčků a „všech tříd“.
- Typy výstupních zpráv: prostý text, HTML, XML. Všechny typy zpráv podporují rozbalení, do hloubky podrobností ovládané uživatelem. Zpráva HTML podporuje propojení zdrojového kódu.
- Výstupní sestavy mohou zvýraznit položky s úrovněmi pokrytí pod prahovými hodnotami poskytnutými uživatelem.
- Data pokrytí získaná v různých přístrojích nebo testovacích bězích lze sloučit.
- je možné vypsat nebo resetovat data pokrytí na dálku a bez ukončení JVM.
- nevyžaduje přístup ke zdrojovému kódu a elegantně degraduje s klesajícím množstvím ladicích informací dostupných ve vstupních třídách.
- může vybavit jednotlivé soubory .class nebo celé .jars (na místě, pokud je to požadováno). Efektivní filtrování podmnožiny pokrytí je také možné.
- Makefile a integrace sestavení ANT jsou podporovány na stejné úrovni.
- Runtime režie přidané instrumentace je malá (5–20%) a samotný bytecode instrumentor je velmi rychlý (většinou omezený rychlostí I / O souborů). Režie paměti je několik set bajtů na třídu Java.
- EMMA je 100% čistá Java, nemá žádné závislosti na externí knihovně a funguje v jakémkoli prostředí Java 2 JVM (dokonce 1.2.x).
Reference
- ^ Mise JaCoCo
- ^ Patroklos Papapetrou (19. prosince 2012). „Porovnání nástrojů pro kódování (JaCoCo, Cobertura, Emma) v sonaru“. Důležitý je pouze software. Citováno 3. března 2013.
- ^ Měření pokrytí integračními testy se sonarem - aktualizováno
- ^ A b „Pokrytí kódu“. Webová nápověda IntelliJ IDEA 12.0. JetBrains. Archivovány od originál dne 26. dubna 2013. Citováno 3. března 2013.
- ^ EclEmma, plugin pro pokrytí kódu Eclipse
- ^ Jenkins JaCoCo Plugin
- ^ Podpora NetBeans JaCoCo
- ^ Doplněk JaCoCo společnosti Gradle
- ^ Integrace JaCoCo ve Visual Studio Team Services
- ^ Integrace JaCoCo v TeamCity
- ^ Jacoco je používán nástrojem STAMP DSpot jako volič testů (viděn jako fitness) k výběru testů, které zvyšují pokrytí a mají jedinečnou provedenou cestu
- ^ OpenClover - O nás
- ^ Testwell CTC ++ podporuje všechny úrovně pokrytí
- ^ Testwell CTC ++ podporuje všechny překladače
- ^ „Proč Clover používá instrumentaci zdrojového kódu?“
- ^ Optimalizace testu
- ^ „Atlassian Clover je nyní otevřený zdroj“. atlassian.com. 11. dubna 2017.
- ^ „atlassian / clover“. bitbucket.org.
- ^ Soubory pokrytí kódem EMMA na SourceForge.net
- ^ Expert Spring MVC a Web Flow; Seth Ladd, Darren Davison, Steven Devijver, Colin Yates, str. 289
externí odkazy
- Porovnání OpenClover, Clover, Cobertura, JaCoCo, JCov, CodeCover a PIT
- JaCoCo vs Clover2
- Vyberte si nástroj pro pokrytí kódu v Sonaru 2.2, trochu zastaralé, protože JaCoCo mezitím podporuje pokrytí poboček
- Testování aplikací Java pomocí Visual Studio Team Services