Java kodini qamrab olish vositalari - Java code coverage tools

Java kodini qamrab olish vositalari ikki turlidir: birinchisi, ga qo'shimchalar qo'shadigan vositalar Java manba kodi va uni qayta kompilyatsiya qilishni talab qiladi. Ikkinchidan, bayt kodi, oldin yoki ijro paytida. Maqsad - satrlarni ro'yxatdan o'tkazish orqali kodning qaysi qismlari sinovdan o'tganligini aniqlash kod bajarildi testni o'tkazishda.

JCov

JCov
Tuzuvchi (lar)Leonid Arbouzov, Aleksandr Petrov, Vladimir Generalov, Serguei Chuxontsev, Oleg Uliankin, Gregori Shtuk, Pavel Ojdixin, Konstantin Bobrovskiy, Robert Fild, Aleksandr Kuzmin, Leonid Mesnik, Sergey Borodin, Andrey Titov, Dmitriy Fazunenko, Aleksey Fedorchenko, Leonid Kuskov
Barqaror chiqish
3.0 / 2014 yil 1-sentyabr; 6 yil oldin (2014-09-01)
TuriKodni qamrab olish
LitsenziyaGPL v2 (Classpath istisnosiz)
Veb-saytwiki.openjdk.java.net/ displey/ CodeTools/ jcov

JCov - Java-ning boshidan boshlab Sun JDK (va keyinchalik Oracle JDK) bilan ishlab chiqilgan va ishlatilgan vosita: 1.1 versiyasidan. JCov o'lchash va hisobot berishga qodir Java kodni qamrab olish. JCov shartlari bo'yicha tarqatiladi GNU jamoat litsenziyasi (Classpath Exception bilan 2-versiya). JCov 2014 yilda OpenJDK kod vositalari loyihasining bir qismi sifatida ochiq manbaga aylandi.

Xususiyatlari

JCov kodni qamrab olishning quyidagi turlari to'g'risida xabar berishga qodir:

  • Qoplamani bloklash
  • Qator qamrovi
  • Filial qamrovi
  • Uslub qamrovi

JCov to'plangan ma'lumotlarni saqlashning ikki xil usulini amalga oshiradi:

  • Fayl tizimidagi faylga
  • Serverga ("tarmoqni tortib oluvchi")

JCov ikki xil yondashuvlardan foydalangan holda Java bayt kodini o'rnatish orqali ishlaydi:

  • Sinov qilingan kodni o'zgartirib, oldindan bajariladigan statik asbobsozlik
  • Java agenti yordamida tezda amalga oshiriladigan dinamik asboblar

JCov bir nechta o'ziga xos xususiyatlarga ega, ular quyidagilarni o'z ichiga oladi, lekin ular bilan chegaralanmaydi:

  • Dala qamrovi
  • Abstrakt API qamrovi
  • To'g'ridan-to'g'ri / bilvosita qamrab olish
  • Sinov uchun qamrov to'g'risidagi ma'lumotlar ("sinov tarozilari")
  • Ommaviy API va SPI, bu maxsus filtrlashni amalga oshirishga va / yoki qamrov ma'lumotlarini qazib olishga imkon beradi

JCov-dan foydalanadigan vositalar

  • Oracle JDK (SE va ME)
  • JCK (Java moslik to'plami)
  • Turli Java SE va Java ME TCK-lari
  • Java FX SDK
  • Java FX sahna yaratuvchisi

JaCoCo

JaCoCo
Tuzuvchi (lar)Mark Xofmann, Brok Yanichzak, Evgeniy Mandrikov, Mirko Fridenhagen
Barqaror chiqish
0.8.6 / 2020 yil 15-sentyabr; 2 oy oldin (2020-09-15)
TuriKodni qamrab olish
LitsenziyaEPL
Veb-saytwww.jakoko.org/ jakoko

JaCoCo bu ochiq manbali o'lchov va hisobot uchun asboblar to'plami Java kodni qamrab olish. JaCoCo shartlari bo'yicha tarqatiladi Eclipse Public License. U EMMA o'rnini bosuvchi sifatida ishlab chiqilgan,[1] Eclipse uchun EclEmma plaginining soyaboni ostida.

Xususiyatlari

JaCoCo ko'rsatmalar, yo'nalish va filiallarni qamrab olishni taklif qiladi.

Aksincha Atlasian yonca va OpenClover, manba kodini o'rnatishni talab qiladigan JaCoCo Java bayt kodini ikki xil yondashuv yordamida ishlatishi mumkin:

  • kabi JCov kodni Java agenti bilan ishlayotganda tezda[2]
  • kabi Cobertura va JCov ijro etishdan oldin (oflayn)

Va yig'ilgan ma'lumotlarni faylda saqlash yoki uni TCP orqali yuborish uchun sozlash mumkin. Bir nechta ishlardan yoki kod qismlaridan fayllarni osongina birlashtirish mumkin.[3] Cobertura va dan farqli o'laroq EMMA u Java 7, Java 8 ni to'liq qo'llab-quvvatlaydi,[4] Java 9, Java 10, Java 11, Java 12, Java 13, Java 14 va Java 15.

JaCoCo-dan foydalanadigan yoki qo'shadigan vositalar

OpenClover

OpenClover
Tuzuvchi (lar)Marek Parfianovich, Grzegorz Levandovski
Barqaror chiqish
4.4.1 / 2019 yil 11-oktabr; 13 oy oldin (2019-10-11)
TuriKodni qamrab olish
LitsenziyaApache litsenziyasi 2.0
Veb-saytochiq eshik.org

OpenClover - Atlassian Clover-ning bepul va ochiq manbali vorisi vilka Atlassian tomonidan 2017 yilda chop etilgan Clover kod bazasidan. Unda asl Clover (server nashri) ning barcha xususiyatlari mavjud. OpenClover loyihasini 2012–2017 yillarda Clover-ni saqlab qolgan ishlab chiquvchilar boshqaradi.[12]

OpenClover manba kodini o'lchash texnikasidan foydalanadi va Java bilan ishlaydi, Groovy va AspectJ tillar. Uning ba'zi xususiyatlari quyidagilarni o'z ichiga oladi: qamrovni o'lchash ko'lami ustidan nozik nazorat, testlarni optimallashtirish va murakkab hisobotlar.

OpenClover bilan birlashadi Chumolilar, Maven, Gradle, Grails, Tutilish, IntelliJ IDEA, Bambuk, Jenkins, Xadson, Griffon, SonarQube va AspectJ.

Cobertura

Cobertura
Tuzuvchi (lar)Stiven Kristu
Barqaror chiqish
2.1.1 / 2015 yil 26-fevral; 5 yil oldin (2015-02-26)
Omborgithub.com/ kobertura/ kobertura
TuriKodni qamrab olish
LitsenziyaGPL 2.0
Veb-saytkobertura.github.io/ kobertura/

Cobertura an ochiq manbali kod qamrovini o'lchash vositasi. Buni bayt kodini o'rnatish orqali amalga oshiradi.

Tinchlik

Tinchlik
Tuzuvchi (lar)Maykl Kuk
Barqaror chiqish
1.0 / 2013 yil 8-dekabr; 6 yil oldin (2013-12-08)
TuriKodni qamrab olish
LitsenziyaApache dasturiy ta'minoti litsenziyasi versiya 2.0
Veb-saytwiki.jenkins-ci.org/ displey/ JENKINS/ Serenity + plagin

Tinchlik bu ochiq manbali o'lchov va hisobot uchun asboblar to'plami Java kodni qamrab olish. Asosiy kod ko'rsatkichlari qamrov bilan bir qatorda o'lchanadi: - tsiklometrik murakkablik, barqarorlik, mavhumlik va asosiydan masofa. Hisobot ma'lumotlari ma'lumotlar bazasida saqlanadi va Jenkins / Hudson orqali taqdim etiladi. Interfeys Eclipse IDE interfeysini ingl.

Serenity bayt kodini dinamik ravishda yaxshilaydi va kompilyatsiyadan keyingi qadamni keraksiz qiladi. Ant va Maven loyihalari qo'llab-quvvatlanadi. Konfiguratsiya xml-da amalga oshiriladi, Ant namunasi:

<!-- Serenity system properties. --> kalit ="including.packages" qiymati ="your.package.name.here" /> kalit ="kiritilgan.adapters" qiymati ="qamrov, murakkablik, qaramlik" /><!-- Serenity JVM command line. --> chiziq ="-javaagent: serenity / serenity.jar" />

Va Maven konfiguratsiyasi misoli:

<properties><included.packages>-Dincluded.packages = your.package.name.here</included.packages><included.adapters>-Dincluded.adapters = qamrov, murakkablik, qaramlik</included.adapters></properties><argLine>-javaagent: serenity / serenity.jar -Xms512m -Xmx1024m $ {including.packages} $ {including.adapters}</argLine>

Konfiguratsiyaning to'liq namunasi uchun Jenkins vikisiga murojaat qiling https://wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin.

Jenkins qullari hamda Maven ko'p modulli loyihalari qo'llab-quvvatlanadi.

Java uchun Testwell CTC ++

Testwell CTC ++
Tuzuvchi (lar)Verifysoft Technology
Barqaror chiqish
8.0. / 2016 yil 30-iyun; 4 yil oldin (2016-06-30)
TuriKodni qamrab olish
LitsenziyaMulkiy
Veb-sayttasdiqlash.com/ uz_ctcpp.html

Testwell CTC ++ a kodni qamrab olish uchun vosita C, C ++, Java va C #. Ushbu vositani ishlab chiqish 1989 yilda Finlyandiyaning Testwell shahrida boshlangan. 2013 yildan beri qo'llab-quvvatlash va rivojlantirishni Verifysoft Technology kompaniyasi davom ettirmoqda Offenburg, Germaniya. Testwell CTC ++ barcha kodlarni qamrab olish darajalariga tahlil qiladi O'zgartirilgan shart / qarorni qamrab olish va ko'p shartli qamrov.[13] Asbob hamma bilan ishlaydi kompilyatorlar.[14]

IntelliJ IDEA kodini qoplash agenti

IntelliJ IDEA kodini qoplash agenti
Tuzuvchi (lar)JetBrains
TuriKodni qamrab olish
LitsenziyaApache 2.0
Veb-saytgithub.com/ JetBrains/ intellij-qamrovi

IntelliJ IDEA kodini qoplash agenti a kodni qamrab olish IntelliJ IDEA IDE va ​​TeamCity CI serveriga o'rnatilgan vosita. Bu filiallar qamrovini va har bir sinov uchun qamrovni kuzatishni qo'llab-quvvatlaydi.

Taniqli tarixiy vositalar

Yonca

Yonca
Tuzuvchi (lar)Atlas
Barqaror chiqish
4.1.2 / 2016 yil 11 oktyabr; 4 yil oldin (2016-10-11)
TuriKodni qamrab olish
LitsenziyaApache 2.0
Veb-saytatlaschi.com

Yonca bu Java kodni qamrab olish tomonidan sotib olingan va keyinchalik ishlab chiqilgan tahlil yordam dasturi Atlas. 2017 yil aprel oyida Atlassian Clover-ning ishlash muddati tugaganligini e'lon qildi va shu bilan birga Apache 2.0 litsenziyasi asosida ishlab chiqarildi.

Clover o'zining afzalliklari (masalan, kod o'lchovlarini yig'ish qobiliyati) va kamchiliklari (manbalarni qayta kompilyatsiya qilish kerak) bo'lgan manba kodini priborlash texnikasidan foydalanadi (Cobertura va JaCoCodan farqli o'laroq, bayt kodi asboblarini ishlatadi).[15] Uning ba'zi bir xususiyatlari orasida tarixiy hisobot, qamrovni yig'ish jarayoni ustidan katta nazorat, buyruq qatori vositalari to'plami va eski integratsiya uchun API va boshqalar mavjud.

Clover shuningdek, avvalgi tuzilishdan beri o'zgartirilgan dastur kodini qamrab oladigan testlarni bajarish orqali sinov vaqtini qisqartirishga imkon beradi. Bunga Sinovlarni optimallashtirish deyiladi[16] va avtomatlashtirilgan testlarning tugashini kutish uchun sarflangan vaqtning katta pasayishiga olib kelishi mumkin.

Clover Atlassian (Ant, Maven, Grails, Eclipse, IDEA, Bamboo) va ochiq manbali hamjamiyat (Gradle, Griffon, Jenkins, Hudson, Sonar) tomonidan ishlab chiqilgan bir qator integratsiyalarga ega.

2017 yil aprel oyida Atlassian 4.1.2 versiyasidan keyin endi Clover-ning yangi versiyalarini chiqarmasligini e'lon qildi va uning kodi quyidagicha taqdim etildi: ochiq manbali dasturiy ta'minot joylashtirilgan Bitbucket.[17][18]

EMMA

EMMA
Tuzuvchi (lar)Vlad Roubtsov
Barqaror chiqish
2.1 / 2005 yil 13-may; 15 yil oldin (2005-05-13)
Omborsourceforge.net/ loyihalar/ emma/
TuriKodni qamrab olish
LitsenziyaUmumiy davlat litsenziyasi 1.0
Veb-saytemma.sourceforge.net

EMMA bu ochiq manbali o'lchov va hisobot uchun asboblar to'plami Java kodni qamrab olish. EMMA shartlari bo'yicha tarqatiladi Umumiy davlat litsenziyasi v1.0.

EMMA hozirda faol ishlab chiqilmayapti; so'nggi barqaror chiqish 2005 yil o'rtalarida bo'lib o'tdi. O'rniga JaCoCo ishlab chiqildi.[19]EMMA kodning har bir satrini va har bir shartni bayroq bilan o'rash orqali ishlaydi, bu satr bajarilganda o'rnatiladi.[20]

Xususiyatlari

  • offlayn rejimda (ular yuklanishidan oldin) yoki tezkor (asboblar uchun dastur klassloaderidan foydalangan holda) qamrab olish uchun asboblar sinflari.
  • Qo'llab-quvvatlanadigan qamrov turlari: sinf, usul, chiziq, asosiy blok. EMMA bitta manba kodi satrining qisman qoplanishini aniqlay oladi.
  • Qoplama statistikasi metod, sinf, paket va "barcha sinflar" darajalarida jamlangan.
  • Chiqish hisoboti turlari: oddiy matn, HTML, XML. Hisobotlarning barcha turlari foydalanuvchi tomonidan boshqariladigan tafsilotlar chuqurligiga qarab pastga tushirishni qo'llab-quvvatlaydi. HTML hisoboti manba kodini bog'lashni qo'llab-quvvatlaydi.
  • Chiqish hisobotlari foydalanuvchi tomonidan taqdim etilgan chegaralardan past bo'lgan qamrov darajasi bo'lgan narsalarni ajratib ko'rsatishi mumkin.
  • Turli xil asbob-uskunalar yoki sinov ishlarida olingan qamrov ma'lumotlari birlashtirilishi mumkin.
  • masofadan turib va ​​JVM chiqmasdan qamrab olish ma'lumotlarini tashlab yuborish yoki tiklash mumkin.
  • manba kodiga kirishni talab qilmaydi va kirish sinflarida mavjud bo'lgan disk raskadrovka ma'lumotlarining kamayishi bilan oqilona pasayadi.
  • individual .class fayllarini yoki butun .jarslarni ishlatishi mumkin (agar kerak bo'lsa, joyida). Yopiq to'plamni samarali filtrlash ham mumkin.
  • Makefile va ANT integratsiyasi teng asosda qo'llab-quvvatlanadi.
  • Qo'shilgan asbobsozlikning ish vaqti ortiqcha (5-20%) va bayt kodi asbobining o'zi juda tez (asosan faylni kiritish-chiqarish tezligi bilan cheklangan). Xotira uchun qo'shimcha yuk - bu Java sinfiga bir necha yuz bayt.
  • EMMA 100% toza Java, tashqi kutubxonaga bog'liqlik yo'q va har qanday Java 2 JVM da ishlaydi (hatto 1.2.x).

Adabiyotlar

  1. ^ JaCoCo missiyasi
  2. ^ Patroklos Papapetrou (2012 yil 19-dekabr). "Kodni qamrab olish vositalari (JaCoCo, Cobertura, Emma) Sonarda taqqoslash". Faqat dasturiy ta'minot muhim ahamiyatga ega. Olingan 3 mart 2013.
  3. ^ Sonar bilan integratsiyalashgan testlar orqali qamrovni o'lchash - yangilangan
  4. ^ a b "Kod qamrovi". IntelliJ IDEA 12.0 veb-yordami. JetBrains. Arxivlandi asl nusxasi 2013 yil 26 aprelda. Olingan 3 mart 2013.
  5. ^ EclEmma, ​​Eclipse kodini qamrab oluvchi plagin
  6. ^ Jenkins JaCoCo plagini
  7. ^ NetBeans JaCoCo-ni qo'llab-quvvatlash
  8. ^ Gradle JaCoCo plagini
  9. ^ Visual Studio Team Services-da JaCoCo integratsiyasi
  10. ^ TeamCity-da JaCoCo integratsiyasi
  11. ^ Jacoco qamrovni ko'paytiradigan va noyob bajarilgan yo'lga ega testlarni tanlash uchun STAMP DSpot vositasi tomonidan test selektori sifatida ishlatiladi (fitnes sifatida ko'riladi).
  12. ^ OpenClover - biz haqimizda
  13. ^ Testwell CTC ++ barcha qamrov darajasini qo'llab-quvvatlaydi
  14. ^ Testwell CTC ++ barcha kompilyatorlarni qo'llab-quvvatlaydi
  15. ^ "Nima uchun Clover manba kodi asboblaridan foydalanadi?"
  16. ^ Sinovlarni optimallashtirish
  17. ^ "Atlassian Clover endi ochiq manbaga ega". atlassian.com. 2017 yil 11 aprel.
  18. ^ "atlassian / yonca". bitbucket.org.
  19. ^ SourceForge.net saytidagi EMMA kodini qamrab oluvchi fayllar
  20. ^ Expert Spring MVC va veb-oqim; Set Ladd, Darren Devison, Stiven Devijver, Kolin Yeyts, p. 289

Tashqi havolalar