栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

sonarqube:java代码扫描

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sonarqube:java代码扫描

一、概述

配置好sonar的服务端后,接下来就要使用sonar检测我们的代码了,sonar主要是借助客户端检测工具来检测代码,所以要使用sonar就需要先在我们本地配置好客户端检测工具。
客户端可以通过IDE插件、Sonar-Scanner插件、Ant插件和Maven插件方式进行扫描分析。常用的有扫描器有Sonar-Scanner和Sonar-Runner,使用起来都差不多。这里我使用Sonar-Scanner来作为检测客户端。

二、安装sonar-scanner

下载sonar-scanner
地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

安装sonar-scanner
1)确保安装jdk

# javac -version
javac 11.0.14

2)解压

unzip sonar-scanner-cli-4.7.0.2747-linux.zip

3)配置环境变量,修改文件 /etc/profile

SONAR_SCANNER_HOME=/root/sonar-scanner-4.7.0.2747-linux
export PATH=${SONAR_SCANNER_HOME}/bin:$PATH

环境变量生效

# source /etc/profile

4)验证安装
# sonar-scanner -v

 5)配置sonar-scanner

编辑

vi /root/sonar-scanner-4.7.0.2747-linux/conf/sonar-scanner.properties 

修改sonar.host.url=http://localhost:9000

三、分析项目

新建配置文件
在java项目下,新建 sonar-project.properties 文件,添加以下内容

# must be unique in a given SonarQube instance
sonar.projectKey=my:container

# --- optional properties ---

# defaults to project key
#sonar.projectName=My project
sonar.projectName=container
# defaults to 'not provided'
#sonar.projectVersion=1.0
sonar.projectVersion=1.0

# Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=.
sonar.sources=src

sonar.java.binaries=target/classes
 
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8


参考参数说明:
#key,唯一标识,直接用项目名即可
sonar.projectKey=项目名
sonar.projectName=项目名
sonar.projectVersion=1.0
#要扫描的代码路径,sonar-project.properties文件的相对路径。【配成.或src】
sonar.sources=.
sonar.sourceEncoding=UTF-8
sonar.language=java

分析项目
在java项目目录下执行以下命令

# sonar-scanner

报错1:

ERROR: Error during SonarScanner execution
ERROR: Not authorized. Analyzing this project requires authentication. Please provide a user token in sonar.login or other credentials in sonar.login and sonar.password.

解决1:
因为在配置文件中缺乏sonar.login和sonar.password参数,配置后即可

# vi /root/sonar-scanner-4.7.0.2747-linux/conf/sonar-scanner.properties

添加

sonar.login=xxxx
sonar.password=xxxx

报错2:

INFO: JavaClasspath initialization
ERROR: Invalid value for 'sonar.java.binaries' property.
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 10.946s
INFO: Final Memory: 15M/176M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarScanner execution
java.lang.IllegalStateException: No files nor directories matching 'target/classes'
    at org.sonar.java.classpath.AbstractClasspath.getFilesFromProperty(AbstractClasspath.java:128)
    at org.sonar.java.classpath.ClasspathForMain.init(ClasspathForMain.java:58)
    at org.sonar.java.classpath.AbstractClasspath.getElements(AbstractClasspath.java:319)

解决2:
因为在配置文件中sonar.java.binaries参数配置的值不正确,创建相应的目录即可。

在target目录下创建classes目录

# mkdir target/classes


成功后打开sonarqube,查看报告

参考链接:
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820660.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号