AndroidStudio SonarLint和SonarQube的使用
环境:搭建 windows 本地环境
简介
SonarQube是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码Bug。它可以与您现有的工作流程集成,以支持跨项目分支和拉取请求的持续代码检查。
环境要求
运行 SonarQube 的唯一先决条件是在你的机器上安装 Java 11(Oracle JRE 11 或 OpenJDK 11)且配置了环境变量。如果未安装Java 11 ,SonarQube(Version: 9.1)服务启动失败;
下载SonarQube
下载好是一个zip压缩文件,直接解压到自己想要的目录既可以;
启动SonarQube服务
找到 安装目录\bin\windows-x86-64,点击StartSonar.bat既可启动SonarQube服务;
浏览器中输入
http://localhost:9000 或http://127.0.0.1:9000 即可进入可视化的SonarQube服务界面;初始账号密码都是admin;
在网页端SonarQube创建项目
1,点击Manually,手动创建项目
2,填写项目名称和密钥,密钥可以使用项目名称或者自定义都可以
3,点击Set Up进入,再点击Locally选项
4,输入要生Token的内容,例如输入:Test,点击Generate生成Token,点击继续;
5,这是最后一步,点击Gradle
注意:以上设置要记住Project display name(项目名称)、Project key(密钥)、生成的Token,后面AndroidStudio关联SonarQube服务的时候要用;
踩坑之路
AndroidStudio连接到SonarQube
前言
由于启动SonarQube需要JDK11,所以把Java的环境变量改成JDK11(之前是JDK 8),改了之后如果AndroidStudio是老的版本比如4.1.1之前的版本,可能导致Android Studio启动不了,但是AndroidStudio在改之前已经打开了不影响继续使用;如果是目前最新的AndroidStudio 2020.3.1版本不影响,AndroidStudio 2020.3.1安装时自带jre就是jre11;踩了很多坑才总结者段话;
1,AndroidStudio安装SonarLint插件
具体步骤及使用参考:AndroidStudio SonarLint安装及使用_ezconn的博客-CSDN博客
2,项目下的build.gradle中添加插件:
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3'
3,module 级别的build.gradle(:app)中添加
apply plugin: 'org.sonarqube'
和
sonarqube {
properties {
//Sonar服务器地址
property "sonar.host.url", "http://localhost:9000"
//Token模式
//property "sonar.login","07704f4ca9c20492de2b5b7814a1c0a4ebc6731c"
//账号密码模式
property "sonar.login","SonarQube 账号"
property "sonar.password","SonarQube 密码"
property "sonar.sourceEncoding", "UTF-8"
property "sonar.projectKey", "Test_Sonar"
property "sonar.projectName", project.name
//需要扫描的上传检测代码的模块,可以选择也可以配置哪一些需要或者不需要上传的模块(这里指APP模块下面的java包里面的全部)
property "sonar.sources", "src/main/java"
property "sonar.projectVersion", project.version
}
}
4,Settings —> Tools —> SonarLint ,点击“+”号
5,填写自定义名称(例如Test),选择sonarqube选项,填写SonarQube服务地址,例如本地SonarQube服务地址http:localhost:9000或者http://127.0.0.1:9000
6,点击下一步,选择Login / Password
7,输入SonarQube服务的账号和密码;其他一路下一步就好,最后点击finish;
8,点击Project Settings ,在Connection中找到刚才设置的Connection Name 名称;
9,点击Search in list..同步SonarQube服务端项目;Project :会有Test_Sonar可以选择显示;设置好Connection和Project选项之后点击OK;
10,Terminal 终端输入
gradlew sonarqube
AndroidStudio不在使用SonarQube
File ->Settings -> Tools -> SonarLint -> Project Settings 取消勾选Bind project to SonarQube/SonarCloud即可;
其他
AndroidStudio 版本是2020.3.1,如果AndroidStudio中使用的Gradle是高版本的,比如gradle是7.0.2 ,AGP是 7.0.3;那么Gradle SDK就要使用jre11;因为Gradle工具是groovy语言写的,而groovy也是基于JVM的语言,所以使用和运行Gradle也需要jre版本要求;
Java 8 Java11 都有安装,且环境变量配置的是Java11;
异常
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
解决办法:gradle.properties文件中加入org.gradle.java.home= D:\\IDE\\jdk11(自己本机Java11安装目录,注意没有到bin目录),可能是因为执行 gradlew sonarqube 命令时AGP获取是gradle.properties文件中配置的Java 环境;
SonarQube文档
SonarQube Documentation | SonarQube Docs