sonar-scanner 是一个用于分析代码质量的命令行工具,它基于 SonarQube 平台。SonarQube 是一个开源的代码质量检测平台,可以分析多种编程语言编写的代码,并提供相应的质量报告。通过 sonar-scanner 工具,您可以轻松地对项目代码进行静态分析,从而提高代码质量、降低潜在的错误和风险。

sonar-scanner 的主要使用方法如下:

 在项目根目录下创建一个名为 sonar.properties 的文件,用于配置分析参数。例如:

# sonar.properties  
sonar.projectName=MyProject  
sonar.projectVersion=1.0  
sonar.language=Java  
sonar.sourceCodeEncoding=UTF-8  
sonar.reportPath=report  

 具体参数说明如下:

sonar.
projectKey: 项目关键字

sonar.projectName:项目的名称

sonar.branch.name=develop:分支

sonar.sources:扫描的目录,一般是进入工程目录下进行扫描,如果在非根目录下执行扫描命令,还需要配合其他的参数才可以

sonar.java.binaries=: sonar 二进制路径(只有java工程需要)

sonar.host.url:sonarqube 服务器地址

sonar.login:创建项目时生成的令牌,但是也可以增加一个参数 password,通过用户名和密码进行扫描

sonar.sourceEncoding=UTF-8 编码

忽略规则配置

忽略配置包括以下类型

  • 排除指定目录:sonar.exclusions

排除public 下的所有文件及其子目录下的文件

sonar.exclusions=public/**/*

使用以下配置排除多个目录(逗号分隔的文件夹路径):

sonar.exclusions=public/**/*, test/**/*, application/third_party/**, application/logs/**

# 排除src/main/java/org/sonar目录下全部文件
# 但不包括其子目录下的文件

sonar.exclusions=src/main/java/org/sonar/*

# 排除bank目录及其子目录下的全部文件

sonar.exclusions=bank/**/*
  • 包含指定目录:sonar.inclusions

只扫描src目录下的文件

sonar.inclusions=src/**/*
  • 不需要检测重复代码的文件:sonar.cpd.exclusions

不检查src/assets目录下的所有文件重复度

sonar.cpd.exclusions=src/assets/**/*
  • 包含指定规则的文件不参与扫描:sonar.issue.ignore.allfile

文件中包含 sonarqube disable 字符串的文件不参与扫描,这样我们就可以对一些特殊文件进行排除,字符串由我们自己定义

sonar.issue.ignore.allfile=sonarqube disable
  • 指定的代码块不参与扫描:sonar.issue.ignore.block

从包含@layer的行到包含@endlayer的行之间的所有代码不进行扫描,对于一些误检或者我们不想改变的代码,可以自定义两个标记把他们包含起来,这样这些代码就不会参与扫描了

sonar.issue.ignore.block=e1,e2
sonar.issue.ignore.block.e1.beginBlockRegexp=@layer
sonar.issue.ignore.block.e1.endBlockRegexp=@layer
sonar.issue.ignore.block.e2.beginBlockRegexp=:deep
sonar.issue.ignore.block.e2.endBlockRegexp=:deep
  • 在指定文件中不检查某些规则:sonar.issue.ignore.multicriteria

项目目录下的所有ts文件不执行squid:S1195扫描规则

sonar.issue.ignore.multicriteria=e1,e2
sonar.issue.ignore.multicriteria.e1.ruleKey=Web:ImgWithoutAltCheck
sonar.issue.ignore.multicriteria.e1.resourceKey=**/*

更多推荐