💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# SonarQube代码质量管理 # SonarQube > [SonarQube](http://www.sonarqube.org/)是一个自动代码审查工具,可检测代码中的错误、漏洞和代码异味,几乎支持所有语言,还有强大的插件机制。它可以与现有的工作流程CI集成,以实现跨项目分支和请求的持续代码检查。 ## 安装 > 注意!SonarQube最新版本已不再支持JDK8和MySQL数据库持久化,若使用的JDK8请安装≤7.8.0版本 * 下载[https://www.sonarqube.org/downloads/](https://www.sonarqube.org/downloads/) * JDK8需要安装≤7.8.0版本,下载页面末尾找到`Historical Downloads-Show all versions`下载历史版本 * 解压下载包,进入`bin/对应具体操作系统`目录,执行`./sonar.sh start`启动,到`logs`目录可查看日志 * 其他命令`./sonar.sh stop(停止) | force-stop(强制停止) | restart (重启)| status (查看状态)` * 日志文件`sonar.log`末尾打印`SonarQube is up`说明启动成功,默认9000端口,访问[http://127.0.0.1:9000](http://127.0.0.1:9000/),默认账户密码`admin/admin` ### 生产环境数据库安装-搭建PostgreSQL > SonarQube默认使用了基于内存的数据库,本地直接使用即可。生产环境下建议需安装官方支持的三种数据库`PostgreSQL【推荐】、Oracle、SQL Server`之一 * 简单起见,以下演示使用Docker搭建PostgreSQL,数据库连接地址、账号、密码根据需求自行修改 ~~~ version: '3.1' services: postgres: image: postgres:10 restart: always environment: - POSTGRES_USER=Tceon-PERFOOT - POSTGRES_PASSWORD=Tceon-PERFOOT - POSTGRES_DB=sonar ports: - "5432:5432" ~~~ * 修改SonarQube配置 * 修改配置文件:`sonarqube-7.8/conf/sonar.properties` ~~~ # By default the schema named "public" is used. It can be overridden with the parameter "currentSchema". #sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema # 添加配置你的数据库连接配置 sonar.jdbc.url=jdbc:postgresql://localhost/sonar?currentSchema=public sonar.jdbc.username=Tceon-PERFOOT sonar.jdbc.password=Tceon-PERFOOT ~~~ * 执行`./sonar.sh restart`,重启SonarQube。观察PostgreSQL,可以发现,此时SonarQube会自动在PostgreSQL数据库中建表并插入初始化数据。 ## 插件 ### 中文插件安装 * 可到`配置/Administration-插件市场Marketspace`搜索`Chinese Pack`安装中文插件 ![](https://ooo.0o0.ooo/2020/05/29/X37i5ZftQdxjPuH.png) * 网络问题下载过慢可直接到[https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases](https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases)下载对应版本jar文件,SonarQube7.8版本应使用1.28版本汉化包。将jar包放至`sonarqube-7.8/extensions/plugins`目录下重启服务即可 ### 其他插件 * 当然你可以在插件市场中根据需求安装需要的插件,例如`Findbugs、PMD、CheckStyles`等都是常用的扫描插件 ## 使用 * 在项目页面新建一个项目,根据提示输入令牌,选择项目类型,得到如下命令 ![](https://s1.ax1x.com/2020/05/29/tK3SpR.png) * 若忘记命令点击头像进入`我的账号-安全`配置生成新的令牌填入上述命令中 ![](https://ooo.0o0.ooo/2020/05/29/bqrYnX78IjRp6QZ.png) ### 方式一【推荐】 * 复制上面的命令后在项目根目录下执行该命令即可 ~~~ mvn sonar:sonar \ -Dsonar.projectKey=Tceon-PERFOOT \ -Dsonar.host.url=http://127.0.0.1:9000 \ -Dsonar.login=5cb24d222846d3127105debb3a7223721ed96c00 ~~~ ### 方式二 * 添加至Maven配置文件`apache-maven-3.6.3/conf/settings.xml`中的`<profiles>`标签下 ~~~ <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <sonar.jdbc.url>jdbc:postgresql://localhost/sonar?currentSchema=public</sonar.jdbc.url> <sonar.jdbc.driver>org.postgresql.Driver</sonar.jdbc.driver> <sonar.jdbc.username>Tceon-PERFOOT </sonar.jdbc.username> <sonar.jdbc.password>Tceon-PERFOOT </sonar.jdbc.password> <sonar.host.url>http://127.0.0.1:9000</sonar.host.url> </properties> </profile> ~~~ * 到项目根目录下执行下方命令即可 ~~~ mvn sonar:sonar -Dsonar.java.binaries=target/sonar ~~~ ### 查看结果 * 扫描完毕刷新控制台页面查看结果报告,具体规则和质量阈值可自行配置 ## 与CI集成 * 详见[官方文档](https://docs.sonarqube.org/latest/analysis/branch-pr-analysis-overview/)