使用Sonar扫描工程的代码

一、安装sonar所需的数据库表
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
设置帐号sonar,密码sonar
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
FLUSH PRIVILEGES;java

设置数据包的大小,能够在sql中输入语句,过小的话, sonar写数据库会报错,咱们设置为400M
SHOW VARIABLES LIKE '%max_allowed_packet%';
set global max_allowed_packet=2*1024*1024*200;mysql

建议修改my.ini,永久配置max_allowed_packet=400Mlinux

此外,还有可能innodb_log_file_size过小,默认是48MB,但sonar写数据库的时候,可能会报错说超过innodb_log_file_size的10%,须要增长innodb_log_file_size的配置大小,这个大小与D:\ProgramData\MySQL\MySQL Server 5.6\data下的ib_logfile0文件有关。
SET GLOBAL innodb_log_file_size=2*1024*1024*512;设置为1024MB,这样写入的最大范围能够是102MBweb

建议修改my.ini,永久配置innodb_log_file_size=1024Msql

二、解压缩安装包到/usr/local下数据库

三、设置sonar根目录的用户归属权chown -R xiao:xiao <目录名>
切忌不要用root帐号,由于sonar依赖elasticsearch,而ES是不能再root下运行服务器

四、修改配置文件conf/sonar.propertieselasticsearch

设置mysql的链接帐号、密码和数据库路径
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://192.168.1.101:3306/sonar?useUnicode=true&characterEn
coding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
&maxAllowedPacket=419430400
注意在URL中配置了maxAllowedPacket=419430400,否则仍是会报错,这是由于maxAllowedPacket须要在应用客户端和数据库服务端都设置,注意其中的IP地址根据实际状况修改maven

五、修改sonar的bin目录下的执行权限
chmod +x bin/*url

六、切换到通常帐号xiao

七、启动
./bin/linux-x86-64/sonar start
若是要重启则是sonar restart

若是报错,则查看./logs/下的日志web.log,通常状况都是目录归属权限chown没有设置,或者使用root帐号的问题

八、安装代码扫描器安装sonar scanner
注意,虽然sonar默认建议用maven扫描代码,但不少工程不是用maven管理的,仍是用scanner好。


九、配置sonar scanner
在其conf目录中设置sonar-scanner.properties文件,指定sonar服务器的地址
sonar.host.url=http://192.168.128.132:9000

Windows环境下,在系统环境path中加入sonar scanner的bin目录

十、在待分析的Java项目下建立配置文件sonar-project.properties
内容是

sonar.projectKey=task:project
sonar.projectName=task
sonar.projectVersion=1.0
sonar.sources=E:/project/task/src
sonar.sourceEncoding=UTF-8
sonar.java.libraries = E:/project/task/WebContent/WEB-INF/lib/*.jar
sonar.java.binaries = E:/project/task/WebContent/WEB-INF/classes

其中sonar.projectName是项目的名字,在soanr中标识
sonar.sources是源代码所在的路径
sonar.java.libraries是项目所依赖的库的路径
sonar.java.binaries是项目编译后的class文件的路径

十一、运行待扫描的代码
进入待分析的项目下,执行
sonar-scanner -X

若是一切都正常,会看到命令行出现不少的文件扫描日志,最后是写数据库信息,若是出现了错误,必定要去sonar的log目录下的日志文件,特别是web.log查看缘由,很大多是数据库的链接配置错误。

相关文章
相关标签/搜索