在经历了一上午的安装和查找资料后,对于这篇文章,其实我更想口吐芬芳。

值的你关注并提升你薪资待遇的面试算法开源数据结构和算法实践

目标:

  • 安装一个代码扫描工具,对代码进行静态扫描,及时发现潜在的问题。

SonarQube介绍

  • SonarQube是一个用于管理代码质量的开放平台
    • 可以快速的定位代码中潜在的或者明显的错误。
    • 目前支持java,C#,C/C++,Python,PL/SQL,Cobol,JavaScrip,Groovy等二十几种编程语言的代码质量管理与检测。
    • 集成jenkins和DevOps进行CI/CD工作。
  • 七个维度检测代码质量
    • 复杂度分布(complexity):代码复杂度过高将难以理解
    • 重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方
    • 单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况
    • 代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范
    • 注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读
    • 潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug
    • 结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度

安装所需环境(所以的坑都在这)

  • 1.Java环境
  • 2.数据库
  • 3.SonarQube
  • 4.Sonar-Scanner

对于上述的4个环境,我并没有说明是什么版本,为什么不说明呢?因为随着 SonarQube 版本的不同,其他三个环境都会变化,先举例几个明显的坑:

  • 1、SonarQube-7.9.1需要 java11 才能启动。
  • 2、SonarQube7.9 及以后的版本不再支持 MySQL,SonarQube7.9 之前的版本要求 MYSQL5.6-8.0(左闭右开区间),否则会出现 java.io.IOException: 远程主机强迫关闭了一个现有的连接。
  • 3、有些版本(好像是7以后)的SonarQube,只能扫描master分支,不能扫描其他分支。
  • 4、据其他博文说明:SQL Server 2016(sql server version需要在12以上,也就是SQL Server 2012及以下版本是不兼容sonarqube 8.2的)
  • 5、SonarQube无法连接远程数据库,必须使用localhost。(这个坑有些文章提到,据我实测,不存在,因为我用的就是远程服务器上的sqlserver数据库)

安装大致步骤

  • 1、安装Java11,并配置环境变量(注意:Java11安装后是没有jre的,运行:bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre,会在本目录下生成jre文件夹)
  • 2、安装数据库(根据SonarQube的不同版本,选择不同版本的mysql,或者SonarQube7.9 及以后,直接选择sqlserver吧)(我用的是sonarqube-7.9.1 + Microsoft SQL Server 2017 (RTM-CU20) (KB4541283) - 14.0.3294.2 (X64))
  • 3、下载 SonarQube,(切记选择你想要的版本)。
  • 4、解压缩sonarqube,进入conf文件,配置sonar.properties,这里的配置文件写错了,都会出现连接问题。
配置文件如下:
sonar.jdbc.url=jdbc:sqlserver://xxxxxxxx;databaseName=sonarqube
sonar.jdbc.username=sa
sonar.jdbc.password=xxxxx
sonar.login=admin
sonar.password=admin
  • 5、进入sonarqube\sonarqube-7.9.1\bin\windows-x86-64文件夹,双击StartSonar.bat,出现下图就可以了。
    在这里插入图片描述

使用步骤

  • 如何扫描
  • 扫描后如何导出pdf
    • 下载插件,如何这个型号:sonar-pdfreport-plugin-2.1.1.jar
    • 放置到sonarqube-7.3\extensions\plugins目录下
    • 重启sonar服务
    • 服务重启后可以看到新增了一个配置页,PDF report为添加插件后新增页签。
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐