JavaRush /Блоги Java /Random-TG /Фарогирии код
Nikita Koliadin
Сатҳи
Днепр

Фарогирии код

Дар гурӯҳ нашр шудааст
Салом, дӯстон, ҳамкорон ва... пингвинҳо! Фарогирии code - 1Имрӯз мо дар бораи фарогирии code сӯҳбат хоҳем кард, мо мефаҳмем, ки он чӣ аст, барои чӣ он лозим аст ва чӣ гуна лоиҳаи сарчашмаи кушодаи худро тавассути пешниҳоди омори фарогирии code навсозӣ кардан мумкин аст. Ин мақола идомаи мухтасари мақолаи қаблӣ дар бораи Интегратсияи муттасил мебошад . Дар ин ҷо мо боз як бартарии пурқудрати CI-ро дар якҷоягӣ бо... меомӯзем ва ба зудӣ шумо хоҳед фаҳмид, ки бо чӣ! Ман танҳо таъкид мекунам, ки дар ин ҷо ҳеҷ гуна дастур оид ба дуруст навиштани тестҳо барои барномаҳои шумо ва чӣ гуна ба даст овардани ҳадди аксар имконпазири фарогирии муфид мавҷуд нест; тамоми гуноҳ танҳо дар дӯши шумо мемонад. Пас, биёед!

Фарогирии code чист?

Фарогирии code арзиши муайянест, ки ба мо фоизи codeи сарчашмаро ҳангоми санҷиш анҷом додашударо нишон медиҳад. Хуб, дар ин ҷо ҳама чиз равшан аст. Фоизи фарогирии Кодекс метавонад аз 0 то 100 бошад ва саволе ба миён меояд: оё шумо бояд барои ҳадди аксар фоизи CC кӯшиш кунед? Ҷавоби ман ин аст: ҳа ва не. Барои чӣ ин? Фарз мекунем, ки шумо лоиҳаеро эҷод мекунед, ки онро баъзе лоиҳаҳои дигар истифода хоҳанд кард, он пур аз функсияҳост ва дар байни ҳама даҳшатҳо гирандагон ва сетерҳо ҳастанд ва шумораи онҳо хеле кам аст. Ҳангоми фаро гирифтани функсия, на ҳама, масалан, гирандагон фаро гирифта шудаанд, аммо шумо аниқ медонед, ки онҳое, ки фаро гирифта нашудаанд, дар лоиҳаи шумо даъват карда намешаванд, аммо гетерҳо на ҳамеша "барои худ" навишта мешаванд, бинобар ин онҳо барои "барои худ" лозиманд. муштарӣ». Чӣ бояд кард? Ҳар як гиреҳро алоҳида пӯшонед? Ин санҷиши самаранок нахоҳад буд. Аммо агар мо онҳоро фаро нагирем, мо ба фоизи максималии CC ноил намешавем. Дар ин чо шамшери дудама ба миён меояд.

Чаро мо ба фарогирии code ниёз дорем?

Ман фикр мекунам, ки ҷавоб ба ин савол хеле содда хоҳад буд: Ҳар як code ба озмоиш ниёз дорад, то ҳангоми рефакторинг ё илова/тағйир додани функсия хатогиҳои "ноаён" ба вуҷуд наоянд ва мо метавонем онҳоро пайгирӣ кунем. Мо дар чаҳорчӯба бо нуқтаҳои шикаста ва ислоҳкунандаҳо намегузарем ва ин хатои зиштро дастгир намекунем. Ҳаёт хеле кӯтоҳ аст. Мисол Пас, чизи ҷолибтарин. Вазифа ин аст: Ба лоиҳаи кушодаи мо , ки мо дар мақолаи қаблӣ навишта будем, технологияеро ворид кунед, ки маълумотро дар бораи CC ҷамъоварӣ мекунад, онро дар ҷое коркард мекунад ва имкон дорад ин маълумотро дар GitHub дар шакли нишона, масалан. Ҳама рамзи сарчашма дар GitHub- и ман ҷойгир карда мешаванд .
  1. Начнем с выбора plugin для сборки информации о покрытии codeа в одну кучу. Я лично для себя выбрал JaCoCo, который How раз таки собирает информацию о покрытии codeа. Но есть и альтернативы.

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

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

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

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

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

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

    Code Coverage - 3

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

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

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

    Code Coverage - 5

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

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

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

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

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

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

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

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

      Code Coverage - 8

      Хусусияти онҳо дар он аст, ки вақте шумо онҳоро пахш мекунед, шумо ба саҳифае бо гузориши CC равона карда мешавед;

      Дуюм графикҳо, ҷадвалҳо ва чизҳои шабеҳ мебошанд:

      Code Coverage - 9
истинодҳои муфид Мумкин аст, ки дар матн хатоҳо ва камбудиҳо ҷой дошта бошанд. Ташаккур ба ҳама барои таваҷҷӯҳатон!
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION