پوشش کد چیست؟
پوشش کد مقدار مشخصی است که درصد کد منبع تکمیل شده در طول آزمایش را به ما نشان می دهد. خوب، اینجا همه چیز واضح به نظر می رسد. درصد پوشش کد می تواند از 0 تا 100 متغیر باشد، و ممکن است این سوال پیش بیاید: آیا باید برای حداکثر درصد CC تلاش کنید؟ پاسخ من این است: بله و خیر. چرا اینطور است؟ فرض کنید پروژهای ایجاد میکنید که توسط برخی پروژههای دیگر استفاده میشود، این پروژه پر از عملکرد است و در بین همه وحشتها، گیرندهها و تنظیمکنندهها وجود دارند و تعداد کمی از آنها وجود دارد. هنگام پوشش دادن عملکرد، همه مثلاً دریافتکنندهها تحت پوشش قرار نگرفتند، اما مطمئناً میدانید که آنهایی که پوشش داده نشدهاند در پروژه شما فراخوانی نمیشوند، اما دریافتکنندهها همیشه «برای خودشان» نوشته نمیشوند، بنابراین برای «مورد نیاز» هستند. مشتری". چه باید کرد؟ هر گیرنده را جداگانه بپوشانیم؟ این آزمایش موثر نخواهد بود. اما اگر آنها را پوشش ندهیم، به حداکثر درصد CC نخواهیم رسید. اینجاست که یک شمشیر دو لبه به وجود می آید.چرا به پوشش کد نیاز داریم؟
من فکر میکنم پاسخ به این سوال بسیار ساده خواهد بود: هر کدی نیاز به آزمایش دارد تا هنگام بازسازی یا افزودن/تغییر عملکرد، باگهای "نامرئی" ایجاد نشوند و ما بتوانیم آنها را ردیابی کنیم. ما در چارچوبهایی با نقاط شکست و اشکالزدا اجرا نمیکنیم و این اشکال زشت را کشف نمیکنیم. زندگی خیلی کوتاه است. مثال بنابراین، جالب ترین چیز. وظیفه این است: در پروژه منبع باز خود، که در مقاله قبلی نوشتیم ، فناوری را معرفی کنید که اطلاعات مربوط به CC را جمع آوری می کند، آن را در جایی پردازش می کند، و امکان قرار دادن این اطلاعات در GitHub به شکل یک به عنوان مثال نشان تمام کد منبع در GitHub من پست می شود .-
بیایید با انتخاب یک افزونه برای جمع آوری اطلاعات پوشش کد در یک شمع شروع کنیم. من شخصا JaCoCo را انتخاب کردم که اطلاعات مربوط به پوشش کد را جمع آوری می کند. اما جایگزین هایی نیز وجود دارد .
Сайт JaCoCo предлагает нам скачать плагин, но качать мы нечего не будем, ведь мы используем Build System Maven. Заходим в Maven Repository и ищем JaCoCo Plugin. Берем последнюю версию, и вставляем в наш pom.xml зависимость.
Но через dependencies я делать не рекомендую, ведь есть более хороший, более функциональный альтернативный вариант, и даже не один.
-
Заходим CodeCov Setup выбираем язык Java и выбираем Using JaCoCo плагин, и ставим по инструкции.
-
По той же ссылке выбираем 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:
-
-
Плагин стоит. Все вроде бы замечательно. Но если вы внимательно читали инструкцию по установке JaCoCo plugin, там было указание, добавить в .travis.yml строчку, отвечающую за отправку отчёта plugin на сайт Codecov.
Итак, исходя из Using JaCoCo, нам нужно вписать в наш файл:
after_success: - bash <(curl -s https://codecov.io/bash)
Вписали. Отлично.
-
Все вроде готово, и остались финальные штрихи. Во-первых давайте скомпorруем наш code, и запустим все тесты, причем сделаем это через Lifecycle Maven:
Так How у нас в плагине JaCoCo стоит фаза выполнения test, то должен был появится отчет после выполнения цикла тестов Maven в папке target:
-
Подходим к завершению. Мы видим что все работает прекрасно, осталось лишь убедится что это "все прекрасно" также будет работать на внешних источниках. Настала пора собрать все в кучу. Собираем проект и делаем push на GitHub, перед этим открыв Travis CI и Codecov для мониторинга происходящего.
После push мы видим что сборка успешная:
И результат JaCoCo plugin о покрытии codeа:
-
Помните нашу задачу? Да, да, мы забыл про бейджик. Я хотел вынести тему "Украшение" open-source project'ов в отдельную статью, но маленькую часть все же оставлю здесь.
Итак, пошаговая инструкция что бы не заблудится:
-
Переходим на сайт Codecov;
-
Выбираем проект, который вам нужно;
-
Выбираем Setting:
-
Выбираем Badge и видим ссылки на ваш бейджик в несколько различных формах представления:
Первые это стандартные бейджики, их можно вставить, например, в ваш README.md:
Их особенность в том что при кликании на них вас будет перенаправлять на page с отчетом о CC;
Вторые это графы, таблицы и тому подобные штуки:
-
- Мой тестовый проект, который вы можете скачать, посмотреть, оценить. Все по этой статье находится в branch: JaCoCo;
- ابزارهای پوشش کد جاوا ;
- جایگزین های JaCoCo ;
- کتابخانه JaCoCo ;
- وابستگی به پلاگین JaCoCo Maven ;
- آموزش راه اندازی Codecov ;
- در واقع راه اندازی JaCoCo خود ;
- راه اندازی Cobertura ;
GO TO FULL VERSION