sonar使用记录 发表于 2017-09-09 | 更新于 2021-11-02
| 字数总计: 839 | 阅读时长: 3分钟 | 阅读量:
此文记录使用sonar中遇到的坑以及解决方法。先介绍一下我的环境
SonarQube 版本:6.5
SonarQube OS:Centos 7
MySQL 版本:5.7
SonarScaner 版本:3.0.3
SonarScanner OS:Win 10
SonarQube 配置 配置文件在conf目录下,以下是最简单的配置。需要注意的是jdbc url上的一堆参数。
sonar.jdbc.username = # 数据库用户名 sonar.jdbc.password = # 数据库密码 sonar.jdbc.url =jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false sonar.web.port = #访问端口 默认是9000 sonar.path.logs = #日志路径
启用token SonarScanner的配置文件中需要配置SonarQube的用户名和密码。但这种配置方式具有安全隐患,可以开启使用token。在SonarQube的Web上:右上角[我的账户]-[Tokens]中。开启后可以通过在SonarScanner中的sonar.login=中配置该token即可。此时不需要配置sonar.password=。下面是一个典型的SonarScanner配置文件。
sonar.host.url =https://sonar.lefer.cn sonar.sourceEncoding =UTF-8 sonar.login =58212312286f49bb2f03000ad9c20fb0d2e #此处是token,如果配置的是用户名,则还要继续配置sonar.password
扫描Java项目 在java项目的根目录中添加一个sonar-project.properties
文件。
sonar.projectKey =cdss:cdss sonar.projectName =cdss sonar.projectVersion =1.0.0 sonar.sources =. sonar.sourceEncoding =UTF-8 sonar.java.binaries =./target
扫描多模块的Java项目 区别主要是在sonar-project.properties
文件的配置中。
sonar.projectKey =cdrapp:cdrapp sonar.projectName =winnig-cdr sonar.projectVersion =1.0.0 sonar.sources =. sonar.modules =winning-cdr-admin,winning-cdr-core,winning-cdr-core-api,winning-cdr-dao,winning-cdr-entity,winning-cdr-utils,winning-cdr-website winning-cdr-admin.sonar.projectName =winning-cdr-admin winning-cdr-admin.sonar.projectName =winning-cdr-core winning-cdr-admin.sonar.projectName =winning-cdr-core-api winning-cdr-admin.sonar.projectName =winning-cdr-dao winning-cdr-admin.sonar.projectName =winning-cdr-entity winning-cdr-admin.sonar.projectName =winning-cdr-utils winning-cdr-admin.sonar.projectName =winning-cdr-website sonar.sourceEncoding =UTF-8 sonar.java.binaries =./winning-cdr-admin/target,./winning-cdr-core/target,./winning-cdr-core-api/target,./winning-cdr-dao/target,./winning-cdr-entity/target,./winning-cdr-utils/target,./winning-cdr-website/target
扫描C#项目 C#项目的扫描比Java项目还要简单点。sonar推荐使用MSBuild 14以上,即C#项目编译水平选择.net framework 4.5以上。C#项目的.cs文件,不能是中文名称,否则会出现意料不到的错误。 C#的编码通常是windows-1252。
sonar.projectKey =bi:ui-engine sonar.projectName =ui-engine sonar.projectVersion =1.0 sonar.sources =. sonar.sourceEncoding =windows-1252
nginx额外配置 SonarScanner扫描完成后会将结果发往SonarCube。如果SonarCube前通过nginx转发,需要额外在nginx的配置文件里增加client_max_body_size
配置项。这是因为扫描结果传输时会大于nginx的默认值1MB,使用默认值会报413 Request Entity Too Large
。
{ client_max_body_size 20M; }
MySql额外配置 如果项目规模比较大,SonarScanner扫描完成后的结果也会比较大,这时往MySql数据库中插入的时候也会报错。从SonarScanner的能看到的错误信息是500 内部错误
。这是因为MySql的max_allowed_packet
的默认大小是4Mb。需要进入Mysql命令行做以下操作:
set global max_allowed_packet = 2*1024*1024*10 show VARIABLES like '%max_allowed_packet%';
修改完成后需要重新启动SonarCube。
END