房产类网站开发,防护口罩应该选用,wordpress博客搬家主页404,深圳网络营销公司有哪些目录 jacoco
引入依赖
构建配置修改
单元测试
生成报告
查看报告
报告说明
1. Instructions
2. Branches
3. Cyclomatic Complexity
4. Lines
5. Methods
6. Classes
sonar7.7
基础环境
需要下载软件
解压文件并配置
运行启动 jacoco
引入依赖 dep…目录 jacoco
引入依赖
构建配置修改
单元测试
生成报告
查看报告
报告说明
1. Instructions
2. Branches
3. Cyclomatic Complexity
4. Lines
5. Methods
6. Classes
sonar7.7
基础环境
需要下载软件
解压文件并配置
运行启动 jacoco
引入依赖 dependenciesdependencygroupIdorg.jacoco/groupIdartifactIdjacoco-maven-plugin/artifactIdversion0.8.7/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdversion2.7.10/version/dependency
/dependencies
构建配置修改
buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdconfigurationsource8/sourcetarget8/targetencodingUTF8/encoding/configurationversion3.8.1/version/pluginpluginartifactIdmaven-surefire-plugin/artifactIdversion2.22.2/version/pluginpluginartifactIdmaven-failsafe-plugin/artifactIdversion2.22.2/version/pluginplugingroupIdorg.jacoco/groupIdartifactIdjacoco-maven-plugin/artifactIdversion0.8.7/versionexecutionsexecutionidprepare-agent/idgoalsgoalprepare-agent/goal/goals/executionexecutionidreport/idphasetest/phasegoalsgoalreport/goal/goalsconfiguration!--定义输出的文件夹--outputDirectorytarget/jacoco-report/outputDirectory!--执行数据的文件--dataFile${project.build.directory}/jacoco.exec/dataFile!--要从报告中排除的类文件列表支持通配符(*和?)。如果未指定则不会排除任何内容--excludes**/test/*.class/excludes!--包含生成报告的文件列表支持通配符(*和?)。如果未指定则包含所有内容--includes/includes!--HTML 报告页面中使用的页脚文本。--footer/footer!--生成报告的文件类型HTML(默认)、XML、CSV--formatsHTML/formats!--生成报告的编码格式默认UTF-8--outputEncodingUTF-8/outputEncoding!--抑制执行的标签--skip/skip!--源文件编码--sourceEncodingUTF-8/sourceEncoding!--HTML报告的标题--title${project.name}/title/configuration/executionexecutionidjacoco-check/idgoalsgoalcheck/goal/goalsconfigurationrulesruleelementPACKAGE/elementlimitslimitcounterLINE/countervalueCOVEREDRATIO/valueminimum0.9/minimum/limit/limits/rule/rules/configuration/execution/executions/plugin/plugins
/build
单元测试 需要保证所有的测试都是成功的
生成报告 查看报告 报告说明
Jacoco从多种角度对代码进行了分析包括指令InstructionsC0 Coverage分支BranchesC1 Coverage圈复杂度Cyclomatic Complexity行Lines方法Methods类Classes
1. Instructions Jacoco计算的最小单位就是字节码指令。指令覆盖率表明了在所有的指令中哪些被执行过以及哪些没有被执行。这项指数完全独立于源码格式并且在任何情况下有效不需要类文件的调试信息。
2. Branches Jacoco对所有的if和switch指令计算了分支覆盖率。这项指标会统计所有的分支数量并同时指出哪些分支被执行哪些分支没有被执行。这项指标也在任何情况都有效。异常处理不考虑在分支范围内。
在有调试信息的情况下分支点可以被映射到源码中的每一行并且被高亮表示。
红色背景无覆盖该行的所有指令均无执行。
黄色背景部分覆盖该行部分指令被执行。
绿色背景全覆盖该行所有指令被执行。
3. Cyclomatic Complexity Jacoco为每个非抽象方法计算圈复杂度并也会计算每个类包组的复杂度。根据McCabe1996的定义圈复杂度可以理解为覆盖所有的可能情况最少使用的测试用例数。这项参数也在任何情况下有效。 根据由McCabe1996圈复杂度的定义是在线性组合中计算在一个方法里面所有可能路径的最小数目。所以复杂度可以作为度量单元测试是否有完全覆盖所有场景的一个依据。复杂度即使是在没有调试信息的情况下也可以计算。
圈复杂度VG的正式定义是基于方法的控制流图的有向图表示
v(G) E – N 2
E是边界的数量N是节点的数量。Jacoco 基于下面的方程来计算复杂度B是分支的数量D是决策点的数量
v(G) B – D 1
基于每个分支的被覆盖情况Jacoco也为每个方法计算覆盖和缺失的复杂度。缺失的复杂度同样表示测试案例没有完全覆盖到这个模块。注意Jacoco不将异常处理作为分支try/catch块也同样不增加复杂度。
4. Lines 该项指数在有调试信息的情况下计算。因为每一行代码可能会产生若干条字节码指令所以我们用三种不同状态表示行覆盖率
红色背景无覆盖该行的所有指令均无执行。
黄色背景部分覆盖该行部分指令被执行。
绿色背景全覆盖该行所有指令被执行。
5. Methods 每一个非抽象方法都至少有一条指令。若一个方法至少被执行了一条指令就认为它被执行过。因为JaCoco直接对字节码进行操作所以有些方法没有在源码显示比如某些构造方法和由编译器自动生成的方法也会被计入在内。
6. Classes 每个类中只要有一个方法被执行这个类就被认定为被执行。同5一样有些没有在源码声明的方法被执行也认定该类被执行。
sonar7.7
基础环境 jdk1.8 maven mysql 5.6 8.0 需要下载软件 sonarqube-7.7 sonar-scanner-3.3.0.1492 解压文件并配置
1.创建空数据库并创建用户
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 sonarlocalhost IDENTIFIED BY sonar;
FLUSH PRIVILEGES;
2.解压文件sonarqube-7.7进入conf目录修改 sonar.properties 配置文件
# 数据库 sonar 创建空数据库即可
sonar.jdbc.urljdbc:mysql://localhost:3306/sonar?useUnicodetruecharacterEncodingutf8rewriteBatchedStatementstrueuseConfigsmaxPerformanceuseSSLfalse
# 你的数据库账号
sonar.jdbc.usernameroot
# 你的数据库密码
sonar.jdbc.passwordroot
# 你的数据库编码
sonar.sorceEncodingUTF-8
# sonarQube 的 登录账号 默认admin即可 等自己玩明白了 再来改动
sonar.loginadmin
# sonarQube 的 登录密码 默认admin即可
sonar.passwordadmin
3.解压文件sonar-scanner-3.3.0.1492 进入conf文件夹 修改文件sonar-scanner.properties
sonar.jdbc.urljdbc:mysql://localhost:3306/sonarqube?useUnicodetruecharacterEncodingutf8rewriteBatchedStatementstrueuseConfigsmaxPerformanceuseSSLfalse
sonar.jdbc.usernameroot
sonar.jdbc.passwordroot
sonar.sourceEncodingUTF-8
4.配置环境变量新建系统环境变量
变量名SONAR_RUNNER_HOME 变量值你解压sonar-scanner-3.3.0.1492 的文件夹路径为bin的上层路径不包括bin 编辑path 加入%SONAR_RUNNER_HOME%\bin 打开cmd 输入 sonar-scanner -v 提示成功 5.进入你要质量检测代码的项目。在你的项目根目录下创建一个配置文件 名字为sonar-project.properties
# 因为可能会检测多个项目 所以这个标识就是唯一标识key 你自己定义 这里我定义的是manage
sonar.projectKeysonar-test
# 项目名我用了和key一样的名字
sonar.projectNamesonar-test
#版本 随便定义
sonar.projectVersion1.0
# Comma-separated paths to directories with sources (required)
# 根目录一般指的是pom.xml 同一个目录下
# 这个是要检测的文件路径一般是根目录比如说D盘test项目那么就是D:/test
# 因为我只检测java文件 所以 我指定的就是 D:/test/src/java也就是说检测到哪个就指定到哪里检测全部也可以。因为这个工具也可以过滤指定的文件js或java或css等
sonar.sourcesD:/workspace/sonar-test/src
#这个是classes目录 也是必须填写的。我的classes是 D:/test/target/classes 如果检测全部就是D:/test/target
sonar.java.binariesD:/workspace/sonar-test/target
# Language
sonar.languagejava
# Encoding of the source files
sonar.sourceEncodingUTF-8
#如果是git项目 就加入下面配置 没有就不加
#sonar.scm.providergit
sonar.scm.disabledtrue
6.配置中文插件sonar-l10n-zh-plugin-1.22.jar这样sonar的页面就会变成中文。把插件放在sonarqube-7.7文件夹 \extensions\plugins 下即可
运行启动
1.打开文件 sonarqube-7.7 下的bin目录根据自己需要选择不同系统的文件我的是windows进入windows文件夹 执行 StartSonar.bat双击即可。sonarQube is up 启动成功 2.输入网址 localhost:9000 帐号密码 admin/admin 即可看到主界面。 3.开始代码扫描2种方式
方式一在idea中安装插件sonarLint并扫描代码
方式二在项目路径下也就是你创建sonar-project.properties 的文件夹下开启cmd命令输入命令 sonar-scanner 扫描分析成功。再次刷新网站页就有分析中或已经分析完成的项目了