解决没有覆盖率的问题
在sonar-scanner 中的覆盖率可以通过属性来指定 typescript 覆盖率的文件目录
sonar.typescript.lcov.reportPaths
在Angular项目中,可以通过:
ng test --code-coverage --watch=false
来生成 lcov.info 文件,sonar 通过读取这个文件来获取当前项目的覆盖率
在之前由于本人的愚蠢,在本地环境中,获取了 Angular 项目的覆盖率,然后将项目挂载到Jenkins的工作目录中,但是由于 lcov.info 中的文件目录不正确,导致sonar一直获取不到覆盖率。
这里的路径在Jenkins中找不到,所以一直拿不到覆盖率。
解决办法
方法一:在知道Jenkins 目录的情况下,将这里的路径更改为Jenkins的工作目录
当前 Jenkins 的目录为:/data/jenkins/workspace/demo,遂修改如下:
此时在重新构建的就有覆盖率了。
但是这个方法仅限于零时解决一下,不能用于持续化构建获取sonar 扫描结果
方法二:在Jenkins 工作空间中触发测试从而生成正确目录的覆盖率文件
- 修改 Jenkins 的 pipeline script
import groovy.json.JsonSlurperClassic
node {
def appName="demo"; def appVersionCode="13";
sh "sleep 1"
def appCodeSonarDi