Sonarqube duplicated blocks of code must be remove

Sonarqube duplicated blocks of code must be remove(Source files should not have any duplicated blocks)

解决办法1: 在UI上面把 Copy-paste detection 去除

可以在Sonarqube Server -》 Administration -》 Analysis Scope -》 Duplications -》 Duplication Exclusions 添加不需要检测duplicated blocks of code 的代码,代码内容可以参考(https://stackoverflow.com/questions/11079186/disable-sonar-duplications-on-entity-dto-packages)

解决办法2:在pom.xml文件里面添加不需要检测duplicated blocks of code 的代码名称

  • 背景

很多时候,为了项目尽可能通过代码进行控制,往往不希望通过Sonarqube的Server上面进行设置的方式对代码的Code Smell进行更改,所以可以通过pom.xml进行。

  • 解决办法

在上面解决办法1中可以通过UI添加代码名称,该选项显示 Duplication Exclusions
Patterns used to exclude some source files from the duplication detection mechanism. See below to know how to use wildcards to specify this property.
Key: sonar.cpd.exclusions 可以看到我们可以选择在pom.xml文件里面通过sonar.cpd.exclusions添加不需要检测duplicated blocks of code 的代码名称

检查办法

maven环境下可以使用以下命令进行Sonar检查

mvn sonar:sonar -Dsonar.host.url=yourSonarqubeUrl -Dsonar.login=yourSonarQubeToken

可以通过运行的log看到是否设置成功:

[INFO] Sensor CPD Block Indexer
[INFO] Copy-paste detection exclusions:
  **/Payload/*
[INFO] Sensor CPD Block Indexer (done) | time=75ms
[INFO] SCM provider for this project is: git

更多Sonarqube内容可以参考:http://ioejr.com/index.php/tag/sonarqube/

sonarqube sonar code coverage excludsion

1. 不需要统计测试覆盖率的文件可以在pom.xml文件里面使用以下代码去除

<properties>
<sonar.coverage.exclusions>**/generated/**</sonar.coverage.exclusions>
</properties>

参考:https://freedumbytes.bitbucket.io/dpl/html/quality.assurance.html & https://stackoverflow.com/questions/21425012/configure-sonar-to-exclude-files-from-maven-pom-xml

2. 或者是通过页面在Sonarqube服务端设置

Administration > General Settings > Analysis Scope > Files and set Coverage Exclusions using a (Java-syntax) regular expression to describe what should be left out. 参考:https://stackoverflow.com/questions/43645123/how-to-combine-sonar-cpd-exclusions-with-the-parameters-in-sonarqube-server & https://community.sonarsource.com/t/exclude-all-folders-files-apart-from-one-file-for-duplicate-checking/7104/6

更多Sonarqube内容可以参考:http://ioejr.com/index.php/tag/sonarqube/

Sonarqube 安装问题: Elastic search max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

sonarqube启动时遇到该问题,root用户可以使用命令解决

sysctl -w vm.max_map_count=262144

如果不是root用户应该使用

sudo sysctl -w vm.max_map_count=262144

如果没有sudo权限需要切换为root用户或者具有sudo权限的用户。

主要参考: https://stackoverflow.com/questions/51445846/elastic-search-max-virtual-memory-areas-vm-max-map-count-65530-is-too-low-inc

更多Sonarqube内容可以参考:http://ioejr.com/index.php/tag/sonarqube/

sonar 6.7.7 Process exited with exit value [es]: 143

1. 查看问题

在sonar 6.7.7 环境中,有三个log

-rw-r--r-- 1 sonar sonar  29483 Jul 31 19:25 es.log
-rw-r--r-- 1 sonar sonar  16707 Jul 31 19:25 sonar.log
-rw-r--r-- 1 sonar sonar   2154 Aug  1 11:07 web.log

当es.log 和 sonar.log里面都查看不到问题的时候就应该查看web.log,

2019.07.31 18:57:37 INFO  web[][o.sonar.db.Database] Create JDBC data source for jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
2019.07.31 18:57:38 ERROR web[][o.s.s.p.Platform] Web server startup failed
java.lang.IllegalStateException: Can not connect to database. Please check connectivity and settings (see the properties prefixed by 'sonar.jdbc.').
        at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:108)

可以看到我遇到的问题是数据库连接不了,这个只需要修改数据库连接就行。