JavaRush /Java Blogu /Random-AZ /Kodun əhatə dairəsi
Nikita Koliadin
Səviyyə
Днепр

Kodun əhatə dairəsi

Qrupda dərc edilmişdir
Salamlar, dostlar, həmkarlar və... pinqvinlər! Bu gün Kod ƏhatəsiKodun əhatə dairəsi - 1 haqqında danışacağıq , bunun nə olduğunu, nə üçün lazım olduğunu və Kod Əhatəsinin statistikasını təqdim etməklə açıq mənbə layihənizi necə təkmilləşdirəcəyinizi anlayacağıq. Bu məqalə Davamlı İnteqrasiya haqqında əvvəlki məqalənin lakonik davamıdır . Burada biz CI-nin daha bir güclü üstünlüyünü... ilə birlikdə öyrənəcəyik və tezliklə siz nə ilə tanış olacaqsınız! Yalnız vurğulayacağam ki, burada proqramlarınız üçün testləri necə düzgün yazmaq və mümkün olan maksimum faydalı əhatəyə necə nail olmaq barədə heç bir təlimat olmayacaq; bütün bu günah yalnız sizin çiyninizdə qalacaq. Beləliklə, gedək!

Kodun əhatə dairəsi nədir?

Kodun əhatə dairəsi test zamanı tamamlanan mənbə kodunun faizini bizə göstərən müəyyən dəyərdir. Yaxşı, burada hər şey aydın görünür. Kodun əhatə dairəsi faizi 0-dan 100-ə qədər dəyişə bilər və sual yarana bilər: maksimum CC faizi üçün səy göstərməlisiniz? Cavabım belədir: bəli və yox. Niyə belədir? Deyək ki, bəzi digər layihələr tərəfindən istifadə ediləcək bir layihə yaratdınız, o, funksionallıqla doludur və bütün dəhşətlər arasında alıcılar və tənzimləyicilər var və onlardan kifayət qədər çoxu var. Funksionallığı əhatə edən zaman, deyək ki, alıcıların hamısı əhatə olunmayıb, lakin siz dəqiq bilirsiniz ki, əhatə olunmayanlar sizin layihənizdə çağırılmır, lakin alıcılar həmişə “özləri üçün” yazılmır, ona görə də “göstəricilər” üçün lazımdır. müştəri”. Nə etməli? Hər bir alıcını ayrıca əhatə edirsiniz? Bu effektiv sınaq olmayacaq. Amma onları əhatə etməsək, maksimum CC faizinə nail ola bilməyəcəyik. Burada iki tərəfli qılınc yaranır.

Niyə bizə Kod Əhatəsinə ehtiyacımız var?

Düşünürəm ki, bu sualın cavabı çox sadə olacaq: İstənilən kodun sınaqdan keçirilməsi lazımdır ki, refaktorinq və ya funksionallıq əlavə edərkən/dəyişən zaman “görünməz” səhvlər yaranmasın və biz onları izləyə bilək. Biz kəsmə nöqtələri və sazlayıcıları olan çərçivələrdən keçməyəcəyik və bu iyrənc Bug tutmayacağıq. Həyat çox qısadır. Məsələn , ən maraqlısı budur. Tapşırıq budur: Əvvəlki məqalədə yazdığımız açıq mənbəli layihəmizə CC haqqında məlumat toplayacaq, onu haradasa emal edəcək texnologiyanı daxil edin və bu məlumatı GitHub-da bir formada yerləşdirmək mümkün olacaq. döş nişanı, məsələn. Bütün mənbə kodu mənim GitHub- da yerləşdiriləcək .
  1. Kod əhatə dairəsi məlumatlarını bir yığında toplamaq üçün plagin seçməklə başlayaq . Mən şəxsən kodun əhatə dairəsi haqqında məlumat toplayan JaCoCo-nu seçdim. Amma alternativlər də var .

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

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

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

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

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

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

    Kodun əhatə dairəsi - 3

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

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

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

    Kodun əhatə dairəsi - 5

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

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

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

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

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

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

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

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

      Kodun əhatə dairəsi - 8

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

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

      Kodun əhatə dairəsi - 9
Полезные ссылки Mətndə səhvlər və çatışmazlıqlar ola bilər. Diqqətiniz üçün hamınıza təşəkkür edirik!
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION