
sonarqube
痛点H1
现代的开发模型都会多个分支,但是sonarqube的社区办是不支持多分支的。如果只针对master分支扫描,就会导致功能分支合并后能发现代码问题,并且这个时候才检出的问题如果全改会耗费很大的精力,这个不改那个不改的话最终又无法实施下去了;如果所有分支都扫描,sonarqube服务器上会混入各个分支的问题,非常混乱,没有参考价值。
比较理想的流程中
- 开发人员在本地使用sonarlint先进行本地检查
- 功能分支使用issue mode(preview),仅仅把结果上传到代码平台上(gitlab),不保存在sonarqube服务器上,打不到gateway要求的不让合并分支
- master分支的直接扫描并上传结果到sonar服务器上,全局了解项目的问题趋势
解决H1
这对上面的理想流程,第1、3点其实没有任何问题,主要是第2点,需要通过sonar gitlab plugin来实现。
sonar gitlab pluginH1
首先sonarqube需要安装sonar gitlab plugin,并配置GitLab url
evernotecid://1848B60D-4C87-4A84-B290-9CB3B50663B4/appyinxiangcom/17869242/ENResource/p120
构建H1
本地构建工具的sonarqube scanner需要传递下面的变量给插件
bash
-Dsonar.gitlab.project_id=$CI_PROJECT_PATH-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
同时需要配合issue mode才能取到结果
bash
-Dsonar.analysis.mode=preview[-Dsonar.analysis.serviceGroup=$GROUP_NAME-Dsonar.analysis.commitId=$CI_COMMIT_SHA]
示例
jsx
script:- >-sonar-scanner -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN \-Dsonar.projectKey=${GROUP_NAME}:${PROJECT_NAME} \-Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_LOGIN \-Dsonar.projectKey=${GROUP_NAME}:${PROJECT_NAME} \-Dsonar.gitlab.project_id=$CI_PROJECT_PATH \-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA \-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME \-Dsonar.analysis.mode=preview \-Dsonar.analysis.serviceGroup=$GROUP_NAME \-Dsonar.analysis.commitId=$CI_COMMIT_SHA \-Dsonar.sources=.
NOTE: sonarqube7.7以后就不支持的issue mode了
正常工作的情况下,每次构建Pipeline的最后会多出一个External的Job
evernotecid://1848B60D-4C87-4A84-B290-9CB3B50663B4/appyinxiangcom/17869242/ENResource/p105
移上去还会显示错误的数量
在Commit信息中,会在有问题的代码上以comment的形式显示错误信息,以及最后的最总信息
evernotecid://1848B60D-4C87-4A84-B290-9CB3B50663B4/appyinxiangcom/17869242/ENResource/p106
NOTE: sonar gitlab plugin默认只会显示本次提交的代码的错误信息,如果需要显示所有的错误信息,需要在插件中打开配置Show all issues. (Default false, only new)
评论
新的评论
上一篇
SpaceVIM入门
Layer & Plugins 显示所有Layer信息 显示所有Plugin信息 常用操作 fx 查找后会标红,再次按f/F继续前后查找这个单词 clever-f 导航树 ctrl-r 刷新sv 垂直分割打开sg 水平分割打开 < 调整导航树宽度 note: 在编辑窗口sv/s…
下一篇
Root Import
Root Import Created: January 30, 2021 4:20 PM Category: 前端 如果要设置从根目录开始的路径(而不是相对路径)导入模块,需要配置 tsconfig.json / jsconfig.json IDE/tsserver需要 …
