JavaRush /Blog Jawa /Random-JV /Cakupan kode
Nikita Koliadin
tingkat
Днепр

Cakupan kode

Diterbitake ing grup
Salam, kanca, kolega lan ... penguin! Cakupan Kode - 1Dina iki kita bakal ngomong babagan Cakupan Kode , kita bakal ngerti apa iku, kenapa perlu lan carane nganyarke proyek open-source kanthi nyedhiyakake statistik Cakupan Kode. Artikel iki minangka tutugan laconic saka sadurunge babagan Integrasi Terus-terusan . Kene kita bakal sinau kauntungan kuat liyane CI ing kombinasi karo ... lan rauh sampeyan bakal ngerti karo apa! Aku mung bakal nandheske manawa ora ana pandhuan babagan cara nulis tes kanthi bener kanggo program sampeyan, lan carane entuk jangkoan sing paling migunani, kabeh dosa iki mung bakal ana ing pundhak sampeyan. Dadi, ayo padha lunga!

Apa Cakupan Kode?

Cakupan Kode minangka nilai tartamtu sing nuduhake persentase kode sumber sing wis rampung sajrone tes. Oke, kabeh katon jelas ing kene. Persentase Cakupan Kode bisa saka 0 nganti 100, lan bisa uga ana pitakonan: apa sampeyan kudu ngupayakake persentase CC maksimal? Wangsulanku: ya lan ora. Kok ngono? Ayo dadi ngomong sampeyan nggawe proyek sing bakal digunakake dening sawetara proyèk liyane, iku kebak fungsi, lan ing antarane kabeh medeni ana getter lan setters, lan ana cukup sawetara. Nalika nutupi fungsi kasebut, ora kabeh, ujare, getter ditutupi, nanging sampeyan ngerti manawa sing ora dilindhungi ora diarani ing proyek sampeyan, nanging getter ora mesthi ditulis "kanggo awake dhewe," mula dibutuhake kanggo " klien”. Apa sing kudu ditindakake? Tutup saben getter kanthi kapisah? Iki ora bakal dadi tes sing efektif. Nanging yen kita ora nutupi, kita ora bakal entuk persentase CC maksimal. Ing kene ana pedhang sing nduwurke loro.

Napa kita mbutuhake Cakupan Kode?

Aku jawaban kanggo pitakonan iki bakal banget prasaja: Sembarang kode perlu testing supaya nalika refactoring utawa nambah / ngganti fungsi, "ora katon" kewan omo ora muncul, lan kita bisa nglacak. Kita ora bakal mbukak frameworks karo breakpoints lan debuggers lan nyekel Bug jahat iki. Urip iku cendhak banget. Conto Dadi, sing paling menarik. Tugase yaiku: Ngenalake menyang proyek open-source kita , sing kita tulis ing artikel sadurunge , teknologi sing bakal ngumpulake informasi babagan CC, ngolah nang endi wae, lan bakal bisa kanggo nyelehake informasi iki ing GitHub ing wangun a lencana, contone. Kabeh kode sumber bakal dikirim ing GitHubku .
  1. Ayo miwiti kanthi milih plugin kanggo ngumpulake informasi jangkoan kode dadi siji tumpukan. Aku dhewe milih JaCoCo , sing ngumpulake informasi babagan jangkoan kode. Nanging ana uga alternatif .

    Сайт 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:

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

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

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

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

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

    Cakupan Kode - 3

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

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

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

    Cakupan Kode - 5

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

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

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

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

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

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

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

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

      Cakupan Kode - 8

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

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

      Cakupan Kode - 9
Полезные ссылки Bisa uga ana kesalahan lan kekurangan ing teks kasebut. Matur nuwun kabeh kanggo manungsa waé!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION