IDEA集成SonarQube实现代码扫描与可视化分析

一、背景与需求场景
  • 代码质量管理的必要性
    • 1、降低研发成本,避免 “越写越贵”
    • 2、保障系统稳定,规避生产事故
    • 3、降低维护成本,延长项目生命周期
    • 4、团队协作标准化
  • SonarQube的核心功能简介
    • 1、静态代码分析
    • 2、漏洞检测、
    • 3、代码覆盖率等
  • IDEA作为开发工具集成SonarQube,具有天然性优势
二、环境准备与工具安装

安装SonarQube服务端,本地部署

  • 1、SonarQube各版本下载地址:https://binaries.sonarsource.com/?prefix=Distribution/sonarqube/
  • 2、本次演示使用的是JDK8,对应的版本是sonarqube-7.8版本,如果是JDK11+,则需要使用10.0以上版本
  • 3、下载zip,解压
  • 4、打开根目录\conf\sonar.properties,配置启动端口,防止冲突;
    sonar.web.port=9191
  • 5、打开根目录\conf\wrapper.conf,配置信息如下:
    wrapper.java.command=java wrapper.java.additional.1=-Dsonar.wrapped=true wrapper.java.additional.2=-Djava.awt.headless=true wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp wrapper.java.classpath.1=../../lib/jsw/*.jar wrapper.java.classpath.2=../../lib/common/*.jar wrapper.java.classpath.3=../../lib/*.jar wrapper.java.library.path.1=./lib wrapper.app.parameter.1=org.sonar.application.App wrapper.java.initmemory=8 wrapper.java.maxmemory=32 wrapper.console.format=PM wrapper.console.loglevel=INFO wrapper.logfile=../../logs/sonar.log wrapper.logfile.format=M wrapper.logfile.loglevel=INFO wrapper.syslog.loglevel=NONE wrapper.console.title=SonarQube wrapper.single_invocation=true wrapper.ntservice.name=SonarQube wrapper.ntservice.displayname=SonarQube wrapper.ntservice.description=SonarQube wrapper.ntservice.dependency.1= wrapper.ntservice.starttype=AUTO_START wrapper.ntservice.interactive=false wrapper.disable_restarts=TRUE wrapper.ping.timeout=0 wrapper.shutdown.timeout=0 wrapper.jvm_exit.timeout=0
  • 4、cmd进入sonarqube-7.8\bin\windows-x86-64,执行StartSonar.bat,即可访问可视化页面:http://localhost:端口号 ,登录账户和密码默认都是Admin
  • 5、SonarQube配置项目名称和Token(生成之后切记保存,只有一次)
    在这里插入图片描述
  • 6、安装IDEA插件:SonarLint(JDK8)或者SonarQube For IDE(JDK11+)
三、IDEA集成SonarQube详细步骤
  • 在IDEA中配置SonarQube服务器连接(地址、Token认证)
  • 1、位置:File->Settings->Tools->SonarLint
  • 2、配置项目名称和可视化地址在这里插入图片描述
  • 3、填写Token,上面保存的Token
    在这里插入图片描述
  • 配置项目级SonarQube扫描规则(自定义质量阈、规则集),可视化页面可以根据项目进行自定义规则
  • 通过SonarLint插件实现本地实时扫描,也可以使用GIt库扫描,也可以使用maven扫描,扫描完成后会同步到可视化界面
四、Git仓库代码扫描或者maven命令实现
  • 配置SonarQube 的Maven命令进行扫描,在当前项目根目录下执行:
    mvn sonar:sonar \
      -Dsonar.projectKey=项目名称\
      -Dsonar.host.url=http://地址:端口\
      -Dsonar.login=token
    
    报错解决:合并成一行执行或者使用低版本命令:
    mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar "-Dsonar.host.url=http://地址:端口" "-Dsonar.projectKey=项目" "-Dsonar.login=token"
    
五、搭建可视化分析与问题定位
  • SonarQube Dashboard功能解析(问题分类、严重级别、热点代码)
    在这里插入图片描述
八、总结与扩展方向
  • 结合DevOps实现全流程代码质量管理,比如全自动化的CI、CD

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐