目录
一. 引言
二. 系统环境
三. 问题分析
3.1权限问题
3.2 SonarQube服务问题
3.3 Compute Engine任务失败
3.4 网络问题
3.5 插件问题
3.6 服务器资源问题
3.7 配置问题
四. 问题解决
4.1. 检查sonarqube的权限
4.2 进行PDF report设置
4.3. 检查PDF插件版本
4.4 编写sonar 配置文件
一、前言
本篇文章主要讲一下作者在Linux系统中对代码进行sonar-scanner扫描过程中遇到的无法导出为pdf的问题。
二、系统环境
安装有sonarqube7.9.2.30863,scanner是4.2.0版本, Linux操作系统
三、问题分析
3.1 权限问题:如果SonarQube实例配置安全设置,确保执行PDF生成任务的用户具有适当权限。
3.2 SonarQube服务问题:可能是SonarQube服务本身问题,比如服务没有响应或存在内部错误。
3.3 Compute Engine任务失败:Compute Engine任务可能没有成功执行,导致状态无法获取。
3.4 网络问题:如果是分布式部署,可能存在网络问题导致SonarQube服务器无法与Compute Engine通信。
3.6 插件问题:PDF插件可能存在bug或者与当前SonarQube版本不兼容。
3.7:服务器资源问题:服务器可能由于资源不足(如内存或CPU)导致任务执行失败。
3.8 配置问题:SonarQube或PDF插件的配置可能不正确。
四、问题解决
要解决这个问题,主要进行了步骤调试:
- 检查sonarqube的权限,确保有execute analysis 的权限
- 检查PDF report:确保执行PDF报告过程前,Pdf.skip=true 修改为Pdf.skip=false,即关闭skip功能,对应修改为
- 检查PDF插件安装正确:检查与SonarQube版本是否相匹配的sonar-pdf-plugin插件,其在SonarQube安装目录的extensions/plugins下,如果不匹配,则需要进行下载配置。并重启sonarqube服务。
4.检查sonar 配置文件:
文件位置
配置文件中需要包含以下信息:
#----- Default SonarQube server
sonar.host.url=http://127.0.0.1:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
#服务端的项目名称
sonar.projectKey=sonar_project_name
# 检查的代码路径
sonar.sources=./src
#创建项目时生成的令牌,但是也可以增加一个参数 password,通过用户名和密码进行扫描
sonar.login=e6c95f0690d586c9f86c0a3fff81d319164a8e93
#sonar.password=admin
#使用以下配置排除多个目录(逗号分隔的文件夹路径
#sonar.exclusions=public/**/*, test/**/*
观察到上述配置文件中不包含sonar.pdf的信息需要对其进行配置,添加如下代码:
sonar.username=admin
sonar.password=admin
Sonar.pdf.username=admin
Sonar.pdf.password=admin
则可生成sonar代码扫描的PDF report文件,问题解决。