jenkinsci / code-coverage-api-plugin

Deprecated Jenkins Code Coverage Plugin
https://plugins.jenkins.io/code-coverage-api/
MIT License
112 stars 75 forks source link

Some files are not painted from cobertura report #610

Closed viceice closed 1 year ago

viceice commented 1 year ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.387.1 OS: Linux - 5.15.0-1034-azure Java: 11.0.18 - Eclipse Adoptium (OpenJDK 64-Bit Server VM) --- Office-365-Connector:4.18.0 additional-identities-plugin:1.1 analysis-model-api:11.1.0 ansicolor:1.0.2 antisamy-markup-formatter:159.v25b_c67cd35fb_ apache-httpcomponents-client-4-api:4.5.14-150.v7a_b_9d17134a_5 authentication-tokens:1.4 authorize-project:1.5.1 aws-credentials:191.vcb_f183ce58b_9 aws-java-sdk:1.12.406-374.v4cdf53953691 aws-java-sdk-cloudformation:1.12.406-374.v4cdf53953691 aws-java-sdk-codebuild:1.12.406-374.v4cdf53953691 aws-java-sdk-ec2:1.12.406-374.v4cdf53953691 aws-java-sdk-ecr:1.12.406-374.v4cdf53953691 aws-java-sdk-ecs:1.12.406-374.v4cdf53953691 aws-java-sdk-efs:1.12.406-374.v4cdf53953691 aws-java-sdk-elasticbeanstalk:1.12.406-374.v4cdf53953691 aws-java-sdk-iam:1.12.406-374.v4cdf53953691 aws-java-sdk-logs:1.12.406-374.v4cdf53953691 aws-java-sdk-minimal:1.12.406-374.v4cdf53953691 aws-java-sdk-sns:1.12.406-374.v4cdf53953691 aws-java-sdk-sqs:1.12.406-374.v4cdf53953691 aws-java-sdk-ssm:1.12.406-374.v4cdf53953691 basic-branch-build-strategies:71.vc1421f89888e blueocean-autofavorite:1.2.5 blueocean-commons:1.27.3 blueocean-config:1.27.3 blueocean-core-js:1.27.3 blueocean-dashboard:1.27.3 blueocean-display-url:2.4.1 blueocean-events:1.27.3 blueocean-git-pipeline:1.27.3 blueocean-github-pipeline:1.27.3 blueocean-i18n:1.27.3 blueocean-jwt:1.27.3 blueocean-personalization:1.27.3 blueocean-pipeline-api-impl:1.27.3 blueocean-pipeline-editor:1.27.3 blueocean-pipeline-scm-api:1.27.3 blueocean-rest:1.27.3 blueocean-rest-impl:1.27.3 blueocean-web:1.27.3 bootstrap4-api:4.6.0-5 bootstrap5-api:5.2.2-2 bouncycastle-api:2.27 branch-api:2.1071.v1a_188a_562481 build-token-root:151.va_e52fe3215fc caffeine-api:2.9.3-65.v6a_47d0f4d1fe checks-api:2.0.0 cloudbees-folder:6.815.v0dd5a_cb_40e0e code-coverage-api:4.0.3 command-launcher:90.v669d7ccb_7c31 commons-httpclient3-api:3.1-3 commons-lang3-api:3.12.0-36.vd97de6465d5b_ commons-text-api:1.10.0-36.vc008c8fcda_7b_ config-file-provider:3.11.1 credentials:1224.vc23ca_a_9a_2cb_0 credentials-binding:523.vd859a_4b_122e6 data-tables-api:1.13.3-3 display-url-api:2.3.7 docker-commons:419.v8e3cd84ef49c docker-java-api:3.2.13-68.va_875df25a_b_45 docker-plugin:1.3.0 docker-workflow:563.vd5d2e5c4007f durable-task:504.vb10d1ae5ba2f echarts-api:5.4.0-3 email-ext:2.95 embeddable-build-status:339.v1edb_5e63da_45 external-monitor-job:203.v683c09d993b_9 favorite:2.4.1 font-awesome-api:6.3.0-2 forensics-api:2.1.0 git:5.0.0 git-client:4.2.0 git-forensics:2.0.0 git-parameter:0.9.18 gitea:1.4.5 gitea-checks:449.v0672c320ee47 github:1.37.0 github-api:1.303-417.ve35d9dd78549 github-branch-source:1703.vd5a_2b_29c6cdc google-oauth-plugin:1.0.8 gravatar:2.2 handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953 htmlpublisher:1.31 instance-identity:142.v04572ca_5b_265 ionicons-api:45.vf54fca_5d2154 jackson2-api:2.14.2-319.v37853346a_229 jakarta-activation-api:2.0.1-3 jakarta-mail-api:2.0.1-3 javax-activation-api:1.2.0-6 javax-mail-api:1.6.2-9 jaxb:2.3.8-1 jdk-tool:63.v62d2fd4b_4793 jenkins-design-language:1.27.3 jjwt-api:0.11.5-77.v646c772fddb_0 jobcacher:378.v5e7c64638d63 jquery:1.12.4-1 jquery3-api:3.6.4-1 jsch:0.1.55.61.va_e9ee26616e7 junit:1189.v1b_e593637fa_e kubernetes:3900.va_dce992317b_4 kubernetes-client-api:6.4.1-215.v2ed17097a_8e9 kubernetes-credentials:0.10.0 ldap:671.v2a_9192a_7419d lockable-resources:1131.vb_7c3d377e723 mailer:448.v5b_97805e3767 matrix-auth:3.1.6 matrix-project:785.v06b_7f47b_c631 metrics:4.2.13-420.vea_2f17932dd6 mina-sshd-api-common:2.9.2-62.v199162f0a_2f8 mina-sshd-api-core:2.9.2-62.v199162f0a_2f8 nunit:0.28 oauth-credentials:0.5 okhttp-api:4.10.0-132.v7a_7b_91cef39c pipeline-build-step:487.va_823138eee8b_ pipeline-graph-analysis:202.va_d268e64deb_3 pipeline-groovy-lib:629.vb_5627b_ee2104 pipeline-input-step:466.v6d0a_5df34f81 pipeline-milestone-step:111.v449306f708b_7 pipeline-model-api:2.2125.vddb_a_44a_d605e pipeline-model-definition:2.2125.vddb_a_44a_d605e pipeline-model-extensions:2.2125.vddb_a_44a_d605e pipeline-multibranch-defaults:2.1 pipeline-rest-api:2.32 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2125.vddb_a_44a_d605e pipeline-stage-view:2.32 pipeline-utility-steps:2.15.1 plain-credentials:143.v1b_df8b_d3b_e48 plugin-util-api:3.2.0 popper-api:1.16.1-3 popper2-api:2.11.6-2 prism-api:1.29.0-4 pubsub-light:1.17 saml:4.385.v4dea_91565e9d scm-api:631.v9143df5b_e4a_a scoring-load-balancer:59.vf791549fa_989 script-security:1229.v4880b_b_e905a_6 sidebar-link:2.2.1 simple-theme-plugin:146.v0e67db_a_9052e snakeyaml-api:1.33-95.va_b_a_e3e47b_fa_4 sse-gateway:1.26 ssh-agent:327.v230ecd01f86f ssh-credentials:305.v8f4381501156 ssh-slaves:2.877.v365f5eb_a_b_eec sshd:3.275.v9e17c10f2571 structs:324.va_f5d6774f3a_d timestamper:1.23 token-macro:321.vd7cc1f2a_52c8 trilead-api:2.84.v72119de229b_7 variant:59.vf075fe829ccb versioncolumn:95.v82f3985cd6e1 warnings-ng:10.1.0 workflow-aggregator:596.v8c21c963d92d workflow-api:1208.v0cc7c6e0da_9e workflow-basic-steps:1010.vf7a_b_98e847c1 workflow-cps:3653.v07ea_433c90b_4 workflow-durable-task-step:1241.v1a_63e465f943 workflow-job:1289.vd1c337fd5354 workflow-multibranch:733.v109046189126 workflow-scm-step:408.v7d5b_135a_b_d49 workflow-step-api:639.v6eca_cd8c04a_a_ workflow-support:839.v35e2736cfd5c ```

What Operating System are you using (both controller, and any agents involved in the problem)?

Ubuntu Linux

Reproduction steps

If i pass the normal Cobertura file it works but shows the full path of the file which is undesired and very long.

I remove the sources to not get this error (source dir changes when branch changes)

[Coverage] [-ERROR-] Removing source directory '/var/jenkins/workspace/xxx' - it has not been approved in Jenkins' global configuration.

I make all filename relative to workspace because i like to only see the relative path inside coverage reports

report parts

        <class name="sp.module.ts" filename="apps/sc-sp/src/app/sp.module.ts" line-rate="1" branch-rate="1" complexity="NaN">
        <class name="sp.module.ts" filename="libs/sp/src/lib/sp.module.ts" line-rate="1" branch-rate="1" complexity="NaN">
        <class name="new-file.component.ts" filename="libs/config/src/lib/components/folder/new-file/new-file.component.ts" line-rate="0.7391304347826086" branch-rate="0.3333333333333333" complexity="NaN">

Expected Results

The report should paint all files without any warnings.

Actual Results

Some files can't be painted

Anything else?

i see some errors in the logs, it seems the package name is added to the file path for some files (at least for logging)

[Coverage] [-ERROR-] Source file 'libs.config.src.lib.components.folder.new-file/libs/config/src/lib/components/folder/new-file/new-file.component.ts' not found

maybe related to

viceice commented 1 year ago

those files are from jest istanbul cobertura reporter.

ebrentjones commented 1 year ago

We're seeing the same issue with a Karma-produced istanbul Cobertura report, where the package name is being included in the file path, stopping the Cobertura parser from finding the files

uhafner commented 1 year ago

If possible, it would be helpful to get the xml file (or the interesting parts) for my tests.

viceice commented 1 year ago

I'll can try to create a minimal reproduction the next days

paz-raon commented 1 year ago

jacoco also throws errors

스크린샷 2023-03-30 오후 2 25 10

aboe026 commented 1 year ago

I think I'm seeing the same problem (or something very similar). I've attached some files, and here is the PR I'm trying to get it working with: https://github.com/aboe026/shields.io-badge-results/pull/5 code-coverage-api-plugin-error-files.zip

uhafner commented 1 year ago

Thanks for attaching. It seems that your Cobertura files define package names that must not be part of the filename, i.e. the filename is solely determined by the file nodes. On the other hand, all JaCoCo files have path names that need to be used as prefix for the file names. I think I need to redesign the storage of paths for all parsers to make them all happy.

Another thing from your log file is:

In your coverage file the source folder "/var/jenkins_home/workspace/ts_shields.io-badge-results_PR-5/PR-5-1" is stored.

Currently this is logged as error, so I am wondering: where are the sources stored in terms of an absolute path on your machine? Is the source folder from above a prefix of that workspace?

aboe026 commented 1 year ago

The /var/jenkins_home/workspace/ts_shields.io-badge-results_PR-5/PR-5-1 is the absolute path to the working directory of the build on the docker container running jenkins (the last PR-5-1 directory comes from this line: https://github.com/aboe026/shields.io-badge-results/blob/main/Jenkinsfile#L7 to make the working directory unique per build). The https://github.com/aboe026/shields.io-badge-results repo then gets checked out to that. So for example one of the source files would have an absolute path of /var/jenkins_home/workspace/ts_shields.io-badge-results_PR-5/PR-5-1/src/badge-result.ts