JavaRush /Java Blog /Random-ID /Cakupan Kode
Nikita Koliadin
Level 40
Днепр

Cakupan Kode

Dipublikasikan di grup Random-ID
Salam, teman, kolega, dan... penguin! Cakupan Kode - 1Hari ini kita akan berbicara tentang Cakupan Kode , kita akan mencari tahu apa itu, mengapa diperlukan dan bagaimana cara meningkatkan proyek sumber terbuka Anda dengan menyediakan statistik Cakupan Kode. Artikel ini merupakan kelanjutan singkat dari artikel sebelumnya tentang Integrasi Berkelanjutan . Di sini kita akan mempelajari keuntungan hebat lainnya dari CI yang dikombinasikan dengan... dan Anda akan segera mengetahui apa itu! Saya hanya akan menekankan bahwa tidak akan ada instruksi di sini tentang cara menulis tes untuk program Anda dengan benar, dan bagaimana mencapai cakupan manfaat semaksimal mungkin; seluruh dosa ini hanya akan ada di pundak Anda. Jadi ayo pergi!

Apa itu Cakupan Kode?

Cakupan Kode adalah nilai tertentu yang menunjukkan persentase kode sumber yang diselesaikan selama pengujian. Oke, semuanya tampak jelas di sini. Persentase Cakupan Kode dapat berkisar dari 0 hingga 100, dan mungkin timbul pertanyaan: haruskah Anda mengupayakan persentase CC maksimum? Jawaban saya adalah: ya dan tidak. Mengapa demikian? Katakanlah Anda membuat sebuah proyek yang akan digunakan oleh beberapa proyek lain, itu penuh dengan fungsionalitas, dan di antara semua kengerian itu ada pengambil dan penyetel, dan jumlahnya cukup banyak. Saat mencakup fungsionalitas, tidak semua, katakanlah, pengambil tercakup, tetapi Anda tahu pasti bahwa pengambil yang tidak tercakup tidak dipanggil dalam proyek Anda, tetapi pengambil tidak selalu ditulis "untuk diri mereka sendiri", sehingga diperlukan untuk " klien". Apa yang harus dilakukan? Tutupi setiap pengambil secara terpisah? Ini bukan pengujian yang efektif. Namun jika kita tidak menutupinya, kita tidak akan mencapai persentase CC yang maksimal. Di sinilah muncul pedang bermata dua.

Mengapa kita memerlukan Cakupan Kode?

Saya pikir jawaban atas pertanyaan ini akan sangat sederhana: Kode apa pun memerlukan pengujian sehingga ketika melakukan refactoring atau menambah/mengubah fungsionalitas, bug yang “tidak terlihat” tidak muncul, dan kami dapat melacaknya. Kami tidak akan menjalankan kerangka kerja dengan breakpoint dan debugger dan menangkap Bug keji ini. Hidup ini terlalu singkat. Contoh Jadi, hal yang paling menarik. Tugasnya adalah ini: Memperkenalkan ke dalam proyek sumber terbuka kami , yang kami tulis di artikel sebelumnya , sebuah teknologi yang akan mengumpulkan informasi tentang CC, memprosesnya di suatu tempat, dan informasi ini dapat ditempatkan di GitHub dalam bentuk a lencana, misalnya. Semua kode sumber akan diposting di GitHub saya .
  1. Mari kita mulai dengan memilih plugin untuk mengumpulkan informasi cakupan kode ke dalam satu tumpukan. Saya pribadi memilih JaCoCo , yang mengumpulkan informasi tentang cakupan kode. Namun ada juga alternatif lain .

    Сайт 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
Полезные ссылки Mungkin ada kesalahan dan kekurangan dalam teks. Terima kasih atas perhatian Anda!
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION