Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测
Sonar是从七个维度检测代码质量,而作为开发人员至少需要处理前5中代码质量问题。
1 没有代码标准,不遵循代码标准
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写
2 潜在的bug,潜在的缺陷
sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug
3 糟糕的复杂度分布
文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试
4 重复
显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方
5 没有足够的或者过多的注释
没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上
6 缺乏单元测试
sonar可以很方便地统计并展示单元测试覆盖率
7 糟糕的设计(原文Spaghetti Design,意大利面式设计)
通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系
可以检测自定义的架构规则
通过sonar可以管理第三方的jar包
可以利用LCOM4检测单个任务规则的应用情况
检测耦合
tips:PMD,CheckStyle,Findbugs这些工具都叫静态代码分析工具。什么是静态代码分析?静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、接口等来检查程序的正确性,找出代码隐藏的错误或缺陷,如参数不匹配,有歧义的嵌套语句,错误的递归,非法计算,空指针引用等。
直接开始安装:
依耐安装:指定jdk1.8 、MySQL5.6-5.8、这两个都不安装,基础的东西就不写了
1:开始安装:切换至非rootzhan账户
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-6.7.6.zip
# unzip sonarqube-6.7.6.zip
2:mysql里新增数据库
登录后创建sonar的数据库以及数据库账号:
myslq -u root -p root
CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER ‘sonar’ IDENTIFIED BY ‘sonar’;
GRANT ALL ON sonar.* TO ‘sonar’@’%’ IDENTIFIED BY ‘sonar’;
GRANT ALL ON sonar.* TO ‘sonar’@’localhost’ IDENTIFIED BY ‘sonar’;
FLUSH PRIVILEGES;
3:修改sonarqube相应的配置
[hadoop@izwz99z5o9dc90keftqhlrz linux-x86-64]$ cd /home/hadoop/sonarqube-6.7.6/
[hadoop@izwz99z5o9dc90keftqhlrz sonarqube-6.7.6]$ pwd
/home/hadoop/sonarqube-6.7.6
vim sonarqube-6.7.6/conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=soanr
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.context=/sonar #一定要加斜杠
sonar.web.host=0.0.0.0
sonar.web.port=9000
4:启动服务
[hadoop@izwz99z5o9dc90keftqhlrz linux-x86-64]$ pwd
/home/hadoop/sonarqube-6.7.6/bin/linux-x86-64
[hadoop@izwz99z5o9dc90keftqhlrz linux-x86-64]$ sh sonar.sh start
这里会遇到各种让人心碎的问题,解决的方法就是打开三个日志文件,随时盯着。这样就事情少得很,不然会tu吐血:
日志:
[hadoop@izwz99z5o9dc90keftqhlrz logs]$ pwd
/home/hadoop/sonarqube-6.7.6/logs
[hadoop@izwz99z5o9dc90keftqhlrz logs]$ ll
total 112
-rw-r–r– 1 hadoop hadoop 20768 Feb 25 17:36 access.log
-rw-r–r– 1 hadoop hadoop 2487 Feb 25 17:11 ce.log
-rw-r–r– 1 hadoop hadoop 7549 Feb 25 17:11 es.log
-rw-r–r– 1 hadoop hadoop 2373 Feb 25 17:11 sonar.log
-rw-r–r– 1 hadoop hadoop 72083 Feb 25 17:11 web.log
主要观察的日志:sonar.log 、es.log、web.log
5:开启防火墙
9000端口要开出去,如果你是阿里云还需要配置好安全组策略
firewall-cmd –permanent –add-port=9000/tcp
systemctl restart firewalld.service
6:启动成功标志
web地址:http://47.106.203.79:9000/sonar
sonar.log日志内容作参考
启动异常处理:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解决65536:
切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
解决262144:
切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl –p
感谢这位博主,不然我也还在里面绕:https://blog.csdn.net/wxb880114/article/details/86672656
7:Idea使用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/160933.html