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=**/*