PageSourceSearch

https://www.pseudoyu.com/assets/sonarqube_code_check_setup-CcIQdzq_.js

js pseudoyu.com collected 2026-09-25 14:12:18 UTC 6,501 bytes, 1 lines download raw bytes

1import{u as r,_ as i}from"./WrapperPost.vue_vue_type_style_index_0_lang-bgNpJ1F0.js";import{c as s,o as u,w as c,a as e,d as a}from"./app-EMsQ9hhF.js";const h={__name:"sonarqube_code_check_setup",setup(l){const n={title:"SonarQube 代码质量检查工具配置",date:"2021-10-27T01:57:23.000+0800",lang:"zh",type:"note",duration:"3min",image:"https://image.pseudoyu.com/images/sonarqube_homepage.png",meta:[{property:"og:title",content:"SonarQube 代码质量检查工具配置"},{name:"twitter:title",content:"SonarQube 代码质量检查工具配置"},{property:"og:image",content:"https://image.pseudoyu.com/images/sonarqube_homepage.png"},{name:"twitter:image",content:"https://image.pseudoyu.com/images/sonarqube_homepage.png"},{name:"twitter:card",content:"summary_large_image"}]};return r({title:"SonarQube 代码质量检查工具配置",meta:[{property:"og:title",content:"SonarQube 代码质量检查工具配置"},{name:"twitter:title",content:"SonarQube 代码质量检查工具配置"},{property:"og:image",content:"https://image.pseudoyu.com/images/sonarqube_homepage.png"},{name:"twitter:image",content:"https://image.pseudoyu.com/images/sonarqube_homepage.png"},{name:"twitter:card",content:"summary_large_image"}]}),(m,t)=>{const o=i;return u(),s(o,{frontmatter:n},{default:c(()=>t[0]||(t[0]=[e("div",{class:"prose m-auto slide-enter-content"},[e("h2",{id:"前言",tabindex:"-1"},[a("前言 "),e("a",{class:"header-anchor",href:"#前言","aria-hidden":"true"},"#")]),e("p",null,"最近负责公司一部分项目的代码仓库管理及 code review 等,用到了 SonarQube 这一代码质量检查工具,通过集成 GitLab CI,能够实现在每次合并请求/提交时自动执行代码质量检查并输出检测报告。"),e("p",null,"本文记录了通过 GitLab 仓库导入项目的配置全流程,以便其他项目配置时参考。"),e("h2",{id:"sonarqube-项目配置",tabindex:"-1"},[a("SonarQube 项目配置 "),e("a",{class:"header-anchor",href:"#sonarqube-项目配置","aria-hidden":"true"},"#")]),e("h3",{id:"项目面板",tabindex:"-1"},[a("项目面板 "),e("a",{class:"header-anchor",href:"#项目面板","aria-hidden":"true"},"#")]),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/sonarqube_homepage.png",alt:"sonarqube_homepage"})]),e("p",null,"SonarQube 项目面板如上图所示,会以评级的方式对项目代码质量进行分析。每次进行代码分析后,可以很直观地对代码进行多维度的分析,在合并分支前,提交人员可参照分析结果对代码进行修改完善,减少了代码审阅人员不必要的工作量。"),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/sonarqube_code_detail.png",alt:"sonarqube_code_detail"})]),e("p",null,"点击具体指标则可以深入代码文件对检测出的问题进行标识,为人工 code review 提供了有效参照。"),e("h3",{id:"项目配置",tabindex:"-1"},[a("项目配置 "),e("a",{class:"header-anchor",href:"#项目配置","aria-hidden":"true"},"#")]),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/how_to_analyze.png",alt:"how_to_analyze"})]),e("p",null,"点击右上角「新增项目」,可选择不同的分析方式,支持 Jenkins, GitLab CI 及 GitHub Actions 等常用代码仓库自动化工作流方式,本文将主要说明 GitLab CI 的配置方式。"),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/import_gitlab_project.png",alt:"import_gitlab_project"})]),e("p",null,"选择 GitLab CI 后,选择关联 GitLab 帐号中的项目仓库,进行后续配置。"),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/project_code.png",alt:"project_code"})]),e("p",null,[a("以 Go 项目为例,首先,我们需要按照提示手动创建 "),e("code",null,"sonar-project.properties"),a(" 文件并粘贴配置信息。")]),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/create_token.png.png",alt:"create_token.png"})]),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/config_cicd_var.png",alt:"config_cicd_var"})]),e("p",null,"然后需要为项目创建 Token,并在 GitLab 中 「设置」-「CI/CD」-「变量」配置选项中填写 Token 及 URL 变量值。"),e("h3",{id:"ci-配置",tabindex:"-1"}
1,[a("CI 配置 "),e("a",{class:"header-anchor",href:"#ci-配置","aria-hidden":"true"},"#")]),e("p",null,[a("进行基本项目配置后,需要通过 "),e("code",null,".gitlab-ci.yml"),a(" 配置 GitLab CI 工作流,我的配置如下图所示:")]),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/config_gitlan_ci.png",alt:"config_gitlan_ci"})]),e("p",null,[a("我主要设置了当仓库进行合并请求时,如 "),e("code",null,"src"),a(" 目录下的代码有改变,则执行 "),e("code",null,"testing"),a(" 流水线,通过 SonarQube 进行代码质量检查。")]),e("p",null,"GitLab CI 中还可以添加部署等脚本,与 SonarQube 工具配合使用,以实现工作流的优化。项目的 CI 脚本需要添加相应的 Runner 运行。"),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/sonar_check_begin.png",alt:"sonar_check_begin"})]),e("p",null,"当检测到合并请求时,sonarqube-check 会被触发执行,最终返回执行结果。"),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/sonar_check_success.png",alt:"sonar_check_success"})]),e("p",null,[e("img",{src:"https://image.pseudoyu.com/images/sonarqube_status.png",alt:"sonarqube_status"})]),e("p",null,"此时点开 SonarQube 中项目的页面,则已经有了分析信息,本次代码质量检查完成。"),e("h2",{id:"总结",tabindex:"-1"},[a("总结 "),e("a",{class:"header-anchor",href:"#总结","aria-hidden":"true"},"#")]),e("p",null,"以上就是对 GitLab 仓库中现有 Go 项目配置 SonarQube 代码质量检查工具的全流程。代码质量自动化检查是开发运维规范流程中重要的环节,尤其是在团队项目中,好的规范有助于工作流的优化,提升项目的整体质量。"),e("p",null,"后续也将会对工作中用到的开发运维规范开源工具配置与使用进行记录,如有错漏,敬请交流指正。"),e("h2",{id:"参考资料",tabindex:"-1"},[a("参考资料 "),e("a",{class:"header-anchor",href:"#参考资料","aria-hidden":"true"},"#")]),e("blockquote",null,[e("ol",null,[e("li",null,[e("a",{href:"https://docs.sonarqube.org/latest/",target:"_blank",rel:"noopener"},"SonarQube Document")])])])],-1)])),_:1})}}};export{h as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.