Nikita Koliadin
مرحله
Днепр

پوشش کد

در گروه منتشر شد
با سلام، دوستان، همکاران و... پنگوئن ها! امروز در مورد پوشش کدپوشش کد - 1 صحبت خواهیم کرد ، متوجه خواهیم شد که چیست، چرا به آن نیاز است و چگونه با ارائه آمار پوشش کد، پروژه منبع باز خود را ارتقا دهید. این مقاله ادامه لاکونیک مقاله قبلی در مورد ادغام مداوم است . در اینجا یکی دیگر از مزیت های قدرتمند CI را در ترکیب با ... یاد خواهیم گرفت و به زودی متوجه خواهید شد که با چه چیزی! من فقط تاکید می کنم که در اینجا هیچ دستورالعملی در مورد نحوه صحیح نوشتن تست برای برنامه های شما و نحوه دستیابی به حداکثر پوشش مفید ممکن وجود نخواهد داشت؛ تمام این گناه فقط بر دوش شما خواهد ماند. پس بزن بریم!

پوشش کد چیست؟

پوشش کد مقدار مشخصی است که درصد کد منبع تکمیل شده در طول آزمایش را به ما نشان می دهد. خوب، اینجا همه چیز واضح به نظر می رسد. درصد پوشش کد می تواند از 0 تا 100 متغیر باشد، و ممکن است این سوال پیش بیاید: آیا باید برای حداکثر درصد CC تلاش کنید؟ پاسخ من این است: بله و خیر. چرا اینطور است؟ فرض کنید پروژه‌ای ایجاد می‌کنید که توسط برخی پروژه‌های دیگر استفاده می‌شود، این پروژه پر از عملکرد است و در بین همه وحشت‌ها، گیرنده‌ها و تنظیم‌کننده‌ها وجود دارند و تعداد کمی از آنها وجود دارد. هنگام پوشش دادن عملکرد، همه مثلاً دریافت‌کننده‌ها تحت پوشش قرار نگرفتند، اما مطمئناً می‌دانید که آن‌هایی که پوشش داده نشده‌اند در پروژه شما فراخوانی نمی‌شوند، اما دریافت‌کننده‌ها همیشه «برای خودشان» نوشته نمی‌شوند، بنابراین برای «مورد نیاز» هستند. مشتری". چه باید کرد؟ هر گیرنده را جداگانه بپوشانیم؟ این آزمایش موثر نخواهد بود. اما اگر آنها را پوشش ندهیم، به حداکثر درصد CC نخواهیم رسید. اینجاست که یک شمشیر دو لبه به وجود می آید.

چرا به پوشش کد نیاز داریم؟

من فکر می‌کنم پاسخ به این سوال بسیار ساده خواهد بود: هر کدی نیاز به آزمایش دارد تا هنگام بازسازی یا افزودن/تغییر عملکرد، باگ‌های "نامرئی" ایجاد نشوند و ما بتوانیم آنها را ردیابی کنیم. ما در چارچوب‌هایی با نقاط شکست و اشکال‌زدا اجرا نمی‌کنیم و این اشکال زشت را کشف نمی‌کنیم. زندگی خیلی کوتاه است. مثال بنابراین، جالب ترین چیز. وظیفه این است: در پروژه منبع باز خود، که در مقاله قبلی نوشتیم ، فناوری را معرفی کنید که اطلاعات مربوط به CC را جمع آوری می کند، آن را در جایی پردازش می کند، و امکان قرار دادن این اطلاعات در GitHub به شکل یک به عنوان مثال نشان تمام کد منبع در GitHub من پست می شود .
  1. بیایید با انتخاب یک افزونه برای جمع آوری اطلاعات پوشش کد در یک شمع شروع کنیم. من شخصا JaCoCo را انتخاب کردم که اطلاعات مربوط به پوشش کد را جمع آوری می کند. اما جایگزین هایی نیز وجود دارد .

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

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

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

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

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

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

    پوشش کد - 3

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

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

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

    پوشش کد - 5

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

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

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

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

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

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

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

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

      پوشش کد - 8

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

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

      پوشش کد - 9
Полезные ссылки ممکن است اشتباهات و حذفیات در متن وجود داشته باشد. از توجه همه شما متشکرم!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION