Java кодын қамту құралдары - Java code coverage tools

Java кодын қамту құралдары екі түрге бөлінеді: біріншіден, -ке операторлар қосатын құралдар Java бастапқы код және оны қайта құруды талап етеді. Екіншіден, құрал байт коды, орындау алдында немесе орындау кезінде. Мақсат - кодтардың қай бөліктерін сызықтарды тіркеу арқылы тексерілетіндігін анықтау код орындалды тест тапсыру кезінде.

JCov

JCov
ӘзірлеушілерЛеонид Арбузов, Александр Петров, Владимир Генералов, Сергуэй Чухонцев, Олег Ульянкин, Григорий Стайк, Павел Ождихин, Константин Бобровский, Роберт Филд, Александр Кузьмин, Леонид Месник, Сергей Бородин, Андрей Титов, Дмитрий Фазуненко, Алексей Федорченко, Леонид Кусков
Тұрақты шығарылым
3.0 / 1 қыркүйек, 2014 жыл; 6 жыл бұрын (2014-09-01)
ТүріКодты қамту
ЛицензияGPL v2 (Classpath ерекшеліктерімен)
Веб-сайтуики.openjdk.java.желі/ дисплей/ CodeTools/ jcov

JCov - Java-дан бастап: 1.1 нұсқасынан бастап Sun JDK (және кейінірек Oracle JDK) дамыған және қолданылған құрал. JCov өлшеуге және есеп беруге қабілетті Java кодты қамту. JCov шарттары бойынша таратылады GNU қоғамдық лицензиясы (2-нұсқа, Classpath ерекшеліктерімен). JCov 2014 жылы OpenJDK кодтық құралдар жобасының бөлігі ретінде ашық көзге айналды.

Ерекшеліктер

JCov кодты қамтудың келесі түрлері туралы хабарлауға қабілетті:

  • Қамтуды бұғаттау
  • Желілік қамту
  • Филиалды қамту
  • Қамту әдісі

JCov жиналған деректерді сақтаудың екі түрлі әдісін жүзеге асырады:

  • Файл жүйесіндегі файлға
  • Серверге («желіні тартып алушы»)

JCov Java байт кодын екі түрлі тәсілдерді қолдана отырып жұмыс істейді:

  • Сыналған кодты өзгерте отырып, алдын-ала жасалатын статикалық аспаптар
  • Java агентінің көмегімен жылдам орындалатын динамикалық аспаптар

JCov бірнеше ерекше белгілерге ие, оларға мыналар кіреді, бірақ олармен шектелмейді:

  • Далалық қамту
  • Абстрактілі API қамтуы
  • Тікелей / жанама қамту
  • Тестілеуге арналған ақпарат («сынақ таразы»)
  • Жалпыға ортақ API және SPI, бұл қолданбалы сүзгілеуді жүзеге асыруға және / немесе қамту деректерін өндіруге мүмкіндік береді

JCov қолданатын құралдар

  • Oracle JDK (SE және ME)
  • JCK (Java үйлесімділік жинағы)
  • Әр түрлі Java SE және Java ME TCK
  • Java FX SDK
  • Java FX Scene Builder

JaCoCo

JaCoCo
ӘзірлеушілерМарк Хофман, Брок Яничак, Евгений Мандриков, Мирко Фриденгаген
Тұрақты шығарылым
0.8.6 / 2020 жылғы 15 қыркүйек; 2 ай бұрын (2020-09-15)
ТүріКодты қамту
ЛицензияEPL
Веб-сайтwww.jacoco.org/ jacoco

JaCoCo болып табылады ашық көзі өлшеуге және есеп беруге арналған құралдар жиынтығы Java кодты қамту. JaCoCo шарттары бойынша таратылады Eclipse Public License. Ол EMMA-ны алмастыру ретінде жасалған,[1] Eclipse үшін EclEmma қосылатын модулінің қолшатырының астында.

Ерекшеліктер

JaCoCo нұсқауларды, желіні және филиалды қамтуды ұсынады.

Айырмашылығы Atlassian Clover және OpenClover JaCoCo бастапқы кодты инструменттеуді қажет етеді, Java байт кодын екі түрлі тәсілдерді қолдана алады:

  • сияқты JCov кодты Java агентімен іске қосу кезінде[2]
  • сияқты Кобертура және JCov орындауға дейін (оффлайн)

Жиналған деректерді файлға сақтауға немесе оны TCP арқылы жіберуге болады. Бірнеше жүгіруден немесе кодтық бөліктерден файлдарды оңай біріктіруге болады.[3] Cobertura және EMMA ол Java 7, Java 8-ді толығымен қолдайды,[4] Java 9, Java 10, Java 11, Java 12, Java 13, Java 14 және Java 15.

JaCoCo қолданатын немесе қосатын құралдар

OpenClover

OpenClover
ӘзірлеушілерМарек Парфианович, Гжегож Левандовски
Тұрақты шығарылым
4.4.1 / 11 қазан 2019 ж; 13 ай бұрын (2019-10-11)
ТүріКодты қамту
ЛицензияApache лицензиясы 2.0
Веб-сайташық аспан.org

OpenClover - Atlassian Clover-дің а. Ретінде құрылған еркін және ашық көзі мұрагері шанышқы Atlassian 2017 жылы шығарған Clover код базасынан. Онда түпнұсқа Clover (сервер шығарылымы) барлық мүмкіндіктері бар. OpenClover жобасын 2012–2017 жылдары клеверді ұстаған әзірлеушілер басқарады.[12]

OpenClover бастапқы кодтау техникасын қолданады және Java-мен жұмыс істейді, Groovy және AspectJ тілдер. Оның кейбір ерекшеліктеріне мыналар жатады: қамтуды өлшеу аясын, бақылауды оңтайландыру және күрделі есептерді бақылау.

OpenClover біріктіреді Құмырсқа, Maven, Гред, Grails, Тұтылу, IntelliJ IDEA, Бамбук, Дженкинс, Хадсон, Гриффон, SonarQube және AspectJ.

Кобертура

Кобертура
ӘзірлеушілерСтивен Кристу
Тұрақты шығарылым
2.1.1 / 26.02.2015 ж; 5 жыл бұрын (2015-02-26)
Репозиторийgithub.com/ кобертура/ кобертура
ТүріКодты қамту
ЛицензияGPL 2.0
Веб-сайткобертура.github.io/ кобертура/

Cobertura - бұл ашық көзі кодтық қамтуды өлшеу құралы. Ол байт кодын енгізу арқылы жасалады.

Тыныштық

Тыныштық
ӘзірлеушілерМайкл Кук
Тұрақты шығарылым
1.0 / 2013 ж., 8 желтоқсан; 6 жыл бұрын (2013-12-08)
ТүріКодты қамту
ЛицензияApache бағдарламалық жасақтамасының лицензиясы 2.0 нұсқасы
Веб-сайтуики.jenkins-ci.org/ дисплей/ ДЖЕНКИНС/ Serenity + плагин

Тыныштық болып табылады ашық көзі өлшеуге және есеп беруге арналған құралдар жиынтығы Java кодты қамту. Қамту сияқты негізгі кодометрия өлшенеді: - циклометриялық күрделілік, тұрақтылық, абстракция және негізгіден қашықтық. Есеп деректері объектінің дерекқорында сақталады және Дженкинс / Хадсон арқылы қол жетімді. Интерфейс Eclipse IDE интерфейсін визуалды түрде қайталайды.

Тыныштық байт кодын динамикалық түрде жақсартады, компиляциядан кейінгі қадамды қажетсіз етеді. Ant және Maven жобаларына қолдау көрсетіледі. Конфигурация xml-де орындалады, Ant мысалы:

<!-- Serenity system properties. --> кілт =«енгізілген.пакеттер» мәні =«your.package.name.here» /> кілт =«енгізілген.аптаушылар» мәні =«қамту, күрделілік, тәуелділік» /><!-- Serenity JVM command line. --> сызық =«-javaagent: serenity / serenity.jar» />

Maven конфигурациясының мысалы:

<properties><included.packages>-Dincluded.packages = your.package.name.here</included.packages><included.adapters>-Dincluded.adapters = қамту, күрделілік, тәуелділік</included.adapters></properties><argLine>-javaagent: serenity / serenity.jar -Xms512m -Xmx1024m $ {including.packages} $ {including.adapters}</argLine>

Конфигурацияның толық мысалы үшін мына Дженкинс викиіне жүгініңіз https://wiki.jenkins-ci.org/display/JENKINS/Serenity+Plugin.

Дженкинс құлдары, сондай-ақ Maven көп модульді жобалары қолдау табады.

Java үшін Testwell CTC ++

Testwell CTC ++
ӘзірлеушілерVerifysoft технологиясы
Тұрақты шығарылым
8.0. / 2016 жылғы 30 маусым; 4 жыл бұрын (2016-06-30)
ТүріКодты қамту
ЛицензияМеншіктік
Веб-сайтрастау.com/ kk_ctcpp.html

Testwell CTC ++ Бұл кодты қамту үшін құрал C, C ++, Java және C #. Бұл құралды жасау 1989 жылы Финляндиядағы Тестуэллде басталды. 2013 жылдан бастап қолдау мен дамуды Verifysoft Technology компаниясы жүзеге асырады Оффенбург, Германия. Testwell CTC ++ барлық қамту деңгейіне дейінгі талдауларды жүргізеді Өзгертілген жағдай / шешімді қамту және көп шартты қамту.[13] Құрал бәрімен жұмыс істейді құрастырушылар.[14]

IntelliJ IDEA кодты қамту агенті

IntelliJ IDEA кодты қамту агенті
ӘзірлеушілерJetBrains
ТүріКодты қамту
ЛицензияApache 2.0
Веб-сайтgithub.com/ JetBrains/ intellij-қамту

IntelliJ IDEA кодты қамту агенті Бұл кодты қамту IntelliJ IDEA IDE және TeamCity CI серверіне біріктірілген құрал. Бұл филиалды қамтуды және тестілеуге арналған қамтуды бақылауды қолдайды.

Көрнекті тарихи құралдар

Беде

Беде
ӘзірлеушілерАтласян
Тұрақты шығарылым
4.1.2 / 11 қазан 2016 ж; 4 жыл бұрын (2016-10-11)
ТүріКодты қамту
ЛицензияApache 2.0
Веб-сайтклассик.com

Беде бұл Java кодты қамту сатып алған және әрі қарай дамытқан талдау утилитасы Атласян. 2017 жылдың сәуірінде Atlassian Clover-дің жарамдылық мерзімі аяқталғанын жариялады және сонымен бірге Apache 2.0 лицензиясымен ашылды.

Клеверде өзінің артықшылықтары (мысалы, кодтық көрсеткіштерді жинау мүмкіндігі) және кемшіліктері (дерек көздерін қайта жинау қажет) бар бастапқы кодтық аспаптар техникасы қолданылады (байттық кодтауды қолданатын Cobertura және JaCoCo-ға қарағанда).[15] Оның кейбір ерекшеліктеріне тарихи есеп беру, қамтуды жинау үдерісіне үлкен бақылау, командалық жол инструменті және бұрынғы интеграция үшін API және басқалары кіреді.

Клевер сонымен қатар тестілеу уақытын тек алдыңғы құрастырудан бері өзгертілген қолданбалы кодты қамтитын тестілерді орындау арқылы азайтуға мүмкіндік береді. Бұл тестілеуді оңтайландыру деп аталады[16] автоматтандырылған тестілердің аяқталуын күтуге кететін уақыттың үлкен құлдырауына әкелуі мүмкін.

Клевер Atlassian (Ant, Maven, Grails, Eclipse, IDEA, Bamboo) және ашық көздер қоғамдастығы (Gradle, Griffon, Jenkins, Hudson, Sonar) дамытқан бірқатар интеграциямен келеді.

2017 жылдың сәуірінде Atlassian 4.1.2 нұсқасынан кейін Clover-тің жаңа нұсқаларын енді шығармайтындығын мәлімдеді және оның коды келесідей қол жетімді болды: ашық бастапқы бағдарламалық жасақтама орналастырылған Битбелек.[17][18]

EMMA

EMMA
ӘзірлеушілерВлад Рубцов
Тұрақты шығарылым
2.1 / 2005 жылғы 13 мамыр; 15 жыл бұрын (2005-05-13)
Репозиторийsourceforge.желі/ жобалар/ эмма/
ТүріКодты қамту
ЛицензияЖалпыға ортақ лицензия 1.0
Веб-сайтэмма.sourceforge.желі

EMMA болып табылады ашық көзі өлшеуге және есеп беруге арналған құралдар жиынтығы Java кодты қамту. EMMA шарттары бойынша таратылады Жалпыға ортақ лицензия v1.0.

EMMA қазіргі уақытта белсенді әзірленіп жатқан жоқ; соңғы тұрақты шығарылым 2005 жылдың ортасында орын алды. Ауыстыру ретінде JaCoCo әзірленді.[19]EMMA кодтың әр жолын және әр шартты жалаушамен орау арқылы жұмыс істейді, ол сол жол орындалған кезде орнатылады.[20]

Ерекшеліктер

  • желіден тыс (жүктелместен бұрын) немесе ұшу кезінде (аспаптық қолданбалы класс жүктегішті қолдану арқылы) қамтуға арналған аспаптық сыныптар.
  • Қолдау көрсетілетін қамту түрлері: сынып, әдіс, сызық, негізгі блок. EMMA бір бастапқы код сызығының ішінара қамтылғанын анықтай алады.
  • Қамту статистикасы әдіс, сынып, бума және «барлық сыныптар» деңгейінде біріктіріледі.
  • Шығарылатын есеп түрлері: қарапайым мәтін, HTML, XML. Барлық есеп түрлері пайдаланушы басқаратын егжей-тегжейлі тереңдікте тереңдетуді қолдайды. HTML есебі бастапқы код сілтемесін қолдайды.
  • Шығарылатын есептер пайдаланушы ұсынған шектен төмен қамту деңгейімен элементтерді бөлектей алады.
  • Әр түрлі аспаптарда немесе сынақ жұмыстарында алынған деректерді біріктіруге болады.
  • қашықтықтан және JVM шықпай-ақ, қамту деректерін тастауға немесе қалпына келтіруге болады.
  • бастапқы кодқа қол жетімділікті қажет етпейді және енгізу кластарында қол жетімді отладка туралы ақпараттың азаюымен жақсы нашарлайды.
  • жеке .класс файлдарын немесе тұтас .jars құралын қолдана алады (қаласаңыз, орнында). Ішкі жиынды тиімді сүзу мүмкіндігі де бар.
  • Makefile және ANT интеграциясына тең деңгейде қолдау көрсетіледі.
  • Қосылған қондырғылардың жұмыс уақыты аз (5–20%), ал байт-кодтың өзі өте жылдам (көбіне файл енгізу-шығару жылдамдығымен шектеледі). Жадтың үстеме шығыны - бұл Java класына бірнеше жүз байт.
  • EMMA 100% таза Java, сыртқы кітапханалық тәуелділіктер жоқ және кез-келген Java 2 JVM-де жұмыс істейді (тіпті 1.2.x).

Пайдаланылған әдебиеттер

  1. ^ JaCoCo миссиясы
  2. ^ Патроклос Папапетроу (19 желтоқсан 2012). «Сонардағы кодты қамту құралдары (JaCoCo, Cobertura, Emma) салыстыру». Бағдарламалық жасақтама ғана маңызды. Алынған 3 наурыз 2013.
  3. ^ Sonar көмегімен интеграциялық тестілер арқылы қамтуды өлшеңіз - жаңартылған
  4. ^ а б «Кодты қамту». IntelliJ IDEA 12.0 веб-анықтамасы. JetBrains. Архивтелген түпнұсқа 26 сәуірде 2013 ж. Алынған 3 наурыз 2013.
  5. ^ EclEmma, ​​Eclipse кодын қамту плагині
  6. ^ Дженкинс JaCoCo плагині
  7. ^ NetBeans JaCoCo қолдауы
  8. ^ Gradle JaCoCo плагині
  9. ^ Visual Studio Team Services қызметіндегі JaCoCo интеграциясы
  10. ^ TeamCity ішіндегі JaCoCo интеграциясы
  11. ^ Джакоко STAMP DSpot құралымен сынақ таңдаушы ретінде қолданылады (фитнес ретінде көрінеді), қамтуды арттыратын және бірегей орындалған жолға ие тестілерді таңдау үшін
  12. ^ OpenClover - біз туралы
  13. ^ Testwell CTC ++ барлық қамту деңгейлерін қолдайды
  14. ^ Testwell CTC ++ барлық компиляторларды қолдайды
  15. ^ «Неліктен клевер бастапқы кодтық аспаптарды қолданады?»
  16. ^ Тестті оңтайландыру
  17. ^ «Atlassian Clover қазір ашық көзі болып табылады». atlassian.com. 11 сәуір 2017 ж.
  18. ^ «atlassian / беде». bitbucket.org.
  19. ^ SourceForge.net сайтындағы EMMA кодын қамту файлдары
  20. ^ Сараптамалық MVC және веб-ағым; Сет Лэдд, Даррен Дэвисон, Стивен Девижвер, Колин Йейтс, б. 289

Сыртқы сілтемелер