jenkinsci / code-coverage-api-plugin

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

File Coverage tab is empty #577

Closed hicnar closed 1 year ago

hicnar commented 1 year ago

Jenkins and plugins versions report

Environment ``` enkins: 2.387.1 OS: Mac OS X - 10.15.7 Java: 11.0.10 - Oracle Corporation (OpenJDK 64-Bit Server VM) --- ansicolor:1.0.2 ant:481.v7b_09e538fcca antisamy-markup-formatter:159.v25b_c67cd35fb_ apache-httpcomponents-client-4-api:4.5.14-150.v7a_b_9d17134a_5 authentication-tokens:1.4 backup:1.6.1 bootstrap4-api:4.6.0-5 bootstrap5-api:5.2.2-1 bouncycastle-api:2.27 branch-api:2.1071.v1a_188a_562481 build-monitor-plugin:1.14-653.va_1c684a_30b_ff build-timeout:1.28 built-on-column:1.3 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.0 command-launcher:90.v669d7ccb_7c31 commons-lang3-api:3.12.0-36.vd97de6465d5b_ commons-text-api:1.10.0-36.vc008c8fcda_7b_ conditional-buildstep:1.4.2 config-file-provider:3.11.1 copyartifact:686.v6fd37018d7c2 credentials:1224.vc23ca_a_9a_2cb_0 credentials-binding:523.vd859a_4b_122e6 cucumber-reports:5.7.5 dark-theme:315.va_22e7d692ea_a data-tables-api:1.13.3-2 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-2 email-ext:2.95 envinject:2.901.v0038b_6471582 envinject-api:1.199.v3ce31253ed13 external-monitor-job:203.v683c09d993b_9 font-awesome-api:6.3.0-1 forensics-api:2.0.1 git:5.0.0 git-client:4.1.0 git-server:99.va_0826a_b_cdfa_d github:1.37.0 github-api:1.303-417.ve35d9dd78549 github-branch-source:1701.v00cc8184df93 gradle:2.3.2 groovy:453.vcdb_a_c5c99890 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 javadoc:226.v71211feb_e7e9 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-multijob-plugin:623.v03401733c9a_9 jjwt-api:0.11.5-77.v646c772fddb_0 jnr-posix-api:3.1.16-2 jobConfigHistory:1207.vd28a_54732f92 jquery:1.12.4-1 jquery3-api:3.6.3-1 jsch:0.1.55.61.va_e9ee26616e7 junit:1189.v1b_e593637fa_e 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 maven-plugin:3.21 mina-sshd-api-common:2.9.2-50.va_0e1f42659a_a mina-sshd-api-core:2.9.2-50.va_0e1f42659a_a multibranch-scan-webhook-trigger:1.0.9 naginator:1.18.2 nested-view:1.28 nodelabelparameter:1.11.0 okhttp-api:4.10.0-132.v7a_7b_91cef39c pam-auth:1.10 parameterized-trigger:2.45 pipeline-build-step:487.va_823138eee8b_ pipeline-github-lib:42.v0739460cda_c4 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.2118.v31fd5b_9944b_5 pipeline-model-definition:2.2118.v31fd5b_9944b_5 pipeline-model-extensions:2.2118.v31fd5b_9944b_5 pipeline-rest-api:2.31 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2118.v31fd5b_9944b_5 pipeline-stage-view:2.31 pipeline-utility-steps:2.15.1 plain-credentials:143.v1b_df8b_d3b_e48 plugin-util-api:3.1.0 popper-api:1.16.1-3 popper2-api:2.11.6-2 prism-api:1.29.0-3 publish-over:0.22 publish-over-ssh:1.24 rebuild:1.34 resource-disposer:0.21 run-condition:1.5 scm-api:631.v9143df5b_e4a_a scoring-load-balancer:59.vf791549fa_989 script-security:1229.v4880b_b_e905a_6 snakeyaml-api:1.33-95.va_b_a_e3e47b_fa_4 solarized-theme:0.1 ssh-agent:327.v230ecd01f86f ssh-credentials:305.v8f4381501156 ssh-slaves:2.877.v365f5eb_a_b_eec ssh-steps:2.0.65.vd26b_5b_9b_de4d sshd:3.275.v9e17c10f2571 structs:324.va_f5d6774f3a_d theme-manager:1.6 timestamper:1.22 token-macro:321.vd7cc1f2a_52c8 trilead-api:2.84.v72119de229b_7 variant:59.vf075fe829ccb workflow-aggregator:596.v8c21c963d92d workflow-api:1208.v0cc7c6e0da_9e workflow-basic-steps:1010.vf7a_b_98e847c1 workflow-cps:3641.vf58904a_b_b_5d8 workflow-durable-task-step:1234.v019404b_3832a workflow-job:1284.v2fe8ed4573d4 workflow-multibranch:733.v109046189126 workflow-scm-step:400.v6b_89a_1317c9a_ workflow-step-api:639.v6eca_cd8c04a_a_ workflow-support:839.v35e2736cfd5c ws-cleanup:0.44 ```

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

Mac (controller) and Linux and Mac slaves

Reproduction steps

Guess attemptin to publish coverage reports from jacoco.exec file using v 4.0.0 of the plugin will do.

Expected Results

The source code view with coverage details should be displayed when the File Coverage tab is selected.

Actual Results

The Coverage Report does not display the source code in File Coverage tab for reports generated from Jacoco files. "No source code available for this file" displayed instead (again github will not allow me to upload graphic files even if they are in one of the formats listed in the form below)

and the following exception is displayed in the log Mar 17, 2023 4:09:03 PM WARNING hudson.ExpressionFactory2$JexlExpression evaluate Caught exception evaluating: it.getTableModel(id + '-table') in /job/QuizFactoryBaseBuild/435/coverage/. Reason: java.util.NoSuchElementException: No such table with id -table java.util.NoSuchElementException: No such table with id -table at io.jenkins.plugins.coverage.model.CoverageViewModel.getTableModel(CoverageViewModel.java:285) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

Anything else?

This functionality was working just a few days ago, I still have the jacoco.exec files I used to generate the reports from and after downgrading to v3.5.0 the File Coverage tab is back, so I believe something must have been introduced in the most recent version of the plugin.

uhafner commented 1 year ago

Seems that the old code somehow broke during refactoring. Any chance to try the new step recordCoverage?

hicnar commented 1 year ago

Yep, tried the recordCoverage and it works, but I guess you will still get some comments from unhappy users noticing what I've pointed out above. Also https://www.jenkins.io/doc/pipeline/steps/code-coverage-api/ still has only the publishCoverage step and there's no mention on the plugin page the publishCoverage is now obsolete/deprecated, the only info that I've found about that is in Pipeline Syntax > Snippet Generator. Not a good, clear and transparent way to handle change.

uhafner commented 1 year ago

This definitely is a bug in the old step that I will fix.

The new step is still in beta testing so I do not want to force everybody yet to use it.

uhafner commented 1 year ago

Do you know what implementation steps are required to mark a step as deprecated?

hicnar commented 1 year ago

I'd just put the publishCoverage back on the plugin page and make sure whoever reads it sees that it's that it is deprecated. For now it's just removed, not there. I think it should be there for as long as the the transitional period lasts, I mean when both steps are supported.

It is already marked as deprecated in the Snippet Generator, but again make sure it is on the plugin page but described as as deprecated.

Also, if someone installs a version where both recordCoverage and publishCoverage are present, make sure using publishCoverage will print a line in the log that would say sth like: "publishCoverage is deprecated and will be removed in future versions. Please use recordCoverage instead".

Do you know what implementation steps are required to mark a step as deprecated? no idea, sorry