JavaRush /Java Blog /Random-TK /Kod örtügi
Nikita Koliadin
Dereje
Днепр

Kod örtügi

Toparda çap edildi
Salam, dostlar, kärdeşler we ... pingwinler! Bu gün “Code Coverage”Kod örtügi - 1 hakda gürleşeris , onuň nämedigini, näme üçin zerurdygyny we “Code Coverage” statistikasyny bermek arkaly açyk çeşmeli taslamaňyzy nädip täzeläp boljakdygyny öwreneris. Bu makala, üznüksiz integrasiýa baradaky öňki makalanyň lakoniki dowamy . Bu ýerde CI-iň başga bir güýçli artykmaçlygyny öwreneris ... we ýakyn wagtda nämäniň nämedigine göz ýetirersiňiz! Bu ýerde diňe programmalaryňyz üçin synaglary nädip dogry ýazmalydygy we mümkin boldugyça iň peýdaly peýdany nädip gazanyp boljakdygy barada görkezmeleriň bolmajakdygyny bellärin; bu günä diňe siziň egniňizde galar. Geliň!

Kod örtügi näme?

Kod örtügi, synag wagtynda tamamlanan çeşme kodunyň göterimini görkezýän belli bir bahadyr. Bolýar, bu ýerde hemme zat düşnükli ýaly. Kod örtüginiň göterimi 0 bilen 100 aralygynda bolup biler we sorag ýüze çykyp biler: iň ýokary CC göterimine çalyşmalymy? Jogabym: hawa we ýok. Näme üçin beýle? Beýleki käbir taslamalar tarapyndan ulanyljak bir taslama döredýärsiňiz diýeliň, ol doly işleýär we ähli elhençlikleriň arasynda girýänler we sazlaýjylar bar we olardan gaty az. Funksiýa barada aýdylanda, girýänleriň hemmesi diýilmedi, ýöne ýapylmadyklaryň taslamaňyza çagyrylmaýandygyny anyk bilýärsiňiz, ýöne alýanlar elmydama “özleri üçin” ýazylmaýar, şonuň üçin olar “zerur” müşderi ”. Näme etmeli? Her alyjyny aýratyn ýapyň? Bu täsirli synag bolmaz. Themöne olary ýapmasak, iň ýokary CC göterimine ýetip bilmeris. Ine, iki ýüzli gylyç ýüze çykýar.

Näme üçin kod örtügi gerek?

Bu soraga jogap gaty ýönekeý bolar diýip pikir edýärin: Islendik kod täzeden işlenende ýa-da üýtgedilende ýa-da üýtgedilende, "görünmeýän" kemçilikler ýüze çykmaz we biz olary yzarlap bileris. Bölüniş nokatlary we düzüjiler bilen çarçuwalardan geçip bilmeris we bu ýaman Bugy tutarys. Ömri gaty gysga. Mysal Diýmek, iň gyzykly zat. Wezipe şeýledir: Öňki makalada ýazan açyk çeşmeli taslamamyz bilen tanyşdyryň , CC hakda maglumat ýygnajak, bir ýerde gaýtadan işleýän tehnologiýa we bu maglumatlary GitHub-a a görnüşinde ýerleşdirmek mümkin bolar. nyşany, mysal üçin Sourcehli çeşme kody meniň GitHub- da ýerleşdiriler .
  1. Kod bilen örtülen maglumatlary bir üýşmek üçin bir plugin saýlap başlalyň . Kod bilen baglanyşykly maglumatlary ýygnaýan JaCoCo-ny hut özüm saýladym . Emma alternatiwalaram bar .

    Сайт JaCoCo предлагает нам скачать плагин, но качать мы нечего не будем, ведь мы используем Build System Maven. Заходим в Maven Repository и ищем JaCoCo Plugin. Берем последнюю версию, и вставляем в наш pom.xml зависимость.

    Но через dependencies я делать не рекомендую, ведь есть более хороший, более функциональный альтернативный вариант, и даже не один.

    1. Заходим CodeCov Setup выбираем язык Java и выбираем Using JaCoCo плагин, и ставим по инструкции.

    2. По той же ссылке выбираем Using Maven. Этот вариант будет даже лучше. Cobertura будет извлекать информацию из CI тестов, но увы и тут есть подвох. Все что выше JDK 7 (А на данный момент уже 10 есть) не подойдет. Поэтому мы остановимся на 1 варианте.

    В результате в нашем pom.xml должно было появиться что то вроде того:

    <!-- JaCoCo plugin -->
    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.1</version>
        <executions>
            <execution>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
            </execution>
            <execution>
                <id>report</id>
                <phase>test</phase>
                <goals>
                    <goal>report</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

    И в Maven Projects в списке плагинов появится JaCoCo Plugin:

    Kod örtügi - 2
  2. Плагин стоит. Все вроде бы замечательно. Но если вы внимательно читали инструкцию по установке JaCoCo plugin, там было указание, добавить в .travis.yml строчку, отвечающую за отправку отчёта plugin на сайт Codecov.

    Итак, исходя из Using JaCoCo, нам нужно вписать в наш файл:

    after_success:
      - bash <(curl -s https://codecov.io/bash)

    Вписали. Отлично.

  3. Все вроде готово, и остались финальные штрихи. Во-первых давайте скомпorруем наш code, и запустим все тесты, причем сделаем это через Lifecycle Maven:

    Kod örtügi - 3

    Так How у нас в плагине JaCoCo стоит фаза выполнения test, то должен был появится отчет после выполнения цикла тестов Maven в папке target:

    Kod örtügi - 4
  4. Подходим к завершению. Мы видим что все работает прекрасно, осталось лишь убедится что это "все прекрасно" также будет работать на внешних источниках. Настала пора собрать все в кучу. Собираем проект и делаем push на GitHub, перед этим открыв Travis CI и Codecov для мониторинга происходящего.

    После push мы видим что сборка успешная:

    Kod örtügi - 5

    И результат JaCoCo plugin о покрытии codeа:

    Kod örtügi - 6
  5. Помните нашу задачу? Да, да, мы забыл про бейджик. Я хотел вынести тему "Украшение" open-source project'ов в отдельную статью, но маленькую часть все же оставлю здесь.

    Итак, пошаговая инструкция что бы не заблудится:

    1. Переходим на сайт Codecov;

    2. Выбираем проект, который вам нужно;

    3. Выбираем Setting:

      Kod örtügi - 7
    4. Выбираем Badge и видим ссылки на ваш бейджик в несколько различных формах представления:

      Первые это стандартные бейджики, их можно вставить, например, в ваш README.md:

      Kodyň gapagy - 8

      Их особенность в том что при кликании на них вас будет перенаправлять на page с отчетом о CC;

      Вторые это графы, таблицы и тому подобные штуки:

      Kod örtügi - 9
Полезные ссылки Tekstde ýalňyşlyklar we ýalňyşlyklar bolup biler. Üns bereniňiz üçin hemmäňize sag bolsun aýdýaryn!
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION