2017-12-30 186 views
14

Potrzebuję zobaczyć raport dotyczący pokrycia kodu dla projektu java maven w Gitlab. Według this, this i niektórych innych źródeł:Raport pokrycia kodu przy użyciu pliku gitlab-ci.yml

  1. dodałem jacoco do listy wtyczek w pom.xml.
  2. Dodał strony do mojego pliku .gitlab-ci.yml.
  3. Dodano Total.*?([0-9]{1,3})% do analizy pokrycia kodu w ustawieniach projektu.

ale nie ma żadnego raportu dotyczącego zasięgu lub przynajmniej go nie widzę. Nie ma procentu pokrycia ani strony raportu zasięgu.

Zawartość .gitlab-ci.yml pliku:

image: maven:latest 

variables: 
    MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true" 
    MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true" 

cache: 
    paths: 
    - .m2/repository/ 

build: 
    stage: build 
    script: 
    - mvn $MAVEN_CLI_OPTS compile 

test: 
    stage: test 
    script: 
    - mvn $MAVEN_CLI_OPTS test 
    artifacts: 
    paths: 
     - target/site/jacoco/ 
pages: 
    stage: deploy 
    dependencies: 
    - test 
    script: 
    - mkdir public 
    - mv target/site/jacoco/index.html public 
    artifacts: 
    paths: 
     - public 

deploy: 
    stage: deploy 
    script: 
    - mvn $MAVEN_CLI_OPTS verify 
    only: 
    - master 

jacoco wtyczki w pom.xml:

<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.7.5.201505241946</version> 
    <executions> 
     <execution> 
      <id>pre-unit-test</id> 
      <goals> 
       <goal>prepare-agent</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>post-unit-test</id> 
      <phase>test</phase> 
      <goals> 
       <goal>report</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

mój projekt jest prywatnym projektem na gitlab.com.

Potok i wszystkie 4 zadania pomyślnie przeszły.

Jak mogę zobaczyć raporty dotyczące zasięgu?

Odpowiedz

3

Pracownik GitLab tutaj.

Jeśli administrator skonfigurował strony GitLab, możesz zobaczyć adres URL, na który artefakt został wdrożony, przechodząc (w projekcie) do Settings ->Pages.

Nie powinieneś zobaczyć:

Gratulacje! Twoje strony są obsługiwane pod numerem:https://your-namespace.example.com/your-project

Kliknij ten link i powinieneś być gotowy! Rozszerzamy także obsługę artefaktów HTML. This issue i związane z tym problemy mówią o istniejących i nadchodzących funkcjach, które mogą rozwinąć się w tym, co tu masz.

+1

Dziękuję. Znalazłem strony i link do pliku html raportu raportu. Ale ten plik zawiera tylko prosty procent pokrycia kodu. Czy wiesz, jak mogę zobaczyć zasięg kodu? Mam na myśli postrzeganie kodu objętego jako zielonych linii, odkrytych kodów jako czerwonych linii lub czegoś podobnego? – AshKan

1

Dodaj konfiguracja za cel przygotowanie-agent

<configuration> 
<!-- Sets the path to the file which contains the execution data. --> 
<destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile> 
<!--Sets the name of the property containing the settings 
          for JaCoCo runtime agent.--> 
<propertyName>surefireArgLine</propertyName> 
</configuration> 

A także wewnątrz wtyczki maven-surefire-plugin dodać następującą właściwość pod konfiguracji

<argLine>surefireArgLine</argLine> 

na realizacji swojego celu testową. Raporty zostaną wygenerowane. Wygenerowany plik jacoco-ut.exec można wyświetlić tylko za pomocą IDE.

Oto przykładowy projekt https://github.com/r-sreesaran/http-patch-jax-rs

Więcej informacji można znaleźć https://www.petrikainulainen.net/programming/maven/creating-code-coverage-reports-for-unit-and-integration-tests-with-the-jacoco-maven-plugin/

W pliku .gitlab-ci.yml w sekcji „artefakty” dostosować je w zależności od konfiguracji toru w swojej pom.xml

artefakty: ścieżki: - TARGET/pokrycia-reports/

+1

Twoja odpowiedź nie jest o "gitlab"! – united

+0

@ Dziękujemy za przesłony. Teraz zmodyfikowałem odpowiedź – Sree

2

Wydaje zapomniałeś dodać połączenia do cat w pliku .gitlab-ci.yml.

Powinieneś mieć coś takiego: script: - mvn $MAVEN_CLI_OPTS test - cat target/site/jacoco/index.html

Mając na uwadze powyższe, nie sądzę, że to jest najlepszy sposób to zrobić, jak trzeba zanieczyszczają swoje wyjście z surowego HTML w celu retreive żądana wartość zasięgu.

Polecam przy użyciu metody opisanej w niniejszym wniosku ciągnącej Zamiast: https://github.com/jacoco/jacoco/pull/488

  • utrzymać części jacoco w build.xml
  • Korzystanie z instrukcją to awk drukować poprawną całkowite pokrycie kodu: awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", instructions, "instructions covered"; print 100*covered/instructions, "% covered" }' target/site/jacoco/jacoco.csv
  • Należy zastąpić wyrażenie regularne Gitlab CI instrukcją: \d+.\d+ \% covered