本地有两个工程,一个Angular4的UI工程,使用Jest和Jasmine做单元测试,jest会出code coverage报告。一个后台Node工程,JS编写,用Jasmine做单元测试,istanbul出code coverage报告。
项目需要集成Sonar进行代码检查。
步骤:
1. 下载安装并启动SonarQube
https://docs.sonarqube.org/display/SONAR/Get+Started+in+Two+Minutes
如果运行遇到什么问题了,可以尝试完全删除再重新解压。正常的话,只需要按照说明解压运行就可以了。
SonarQube自带Javascript插件。Typescript检查需要安装SonarTS插件。
SonarTS插件的下载地址 https://github.com/Pablissimo/SonarTsPlugin/releases
2. 使用 sonarqube-scanner依赖执行Sonar检查
介绍 https://www.npmjs.com/package/sonarqube-scanner
package.json里面加上“sonarqube-scanner”的依赖
"gulp-run": "^1.7.1", // gulp-run是给后续gulp任务使用的 "sonarqube-scanner": "^2.1.0", "jasmine": "^2.5.2",
3. 在工程根目录下面添加sonar-project.properties文件,内容配置如下
sonar.projectKey=<groupId>:<artifactId>
sonar.projectName=<project name>
sonar.projectVersion=<project version>
sonar.sources=src
sonar.language=ts
sonar.sourceEncoding=UTF-8
sonar.host.url=http://localhost:9000
sonar.login=<user name> or <your token which was generated in Sonar>
sonar.password=<如果用的token, 这里的值留空>
#设定unit test的code coverage的报告的路径
sonar.ts.coverage.lcovReportPath=<lcov.info文件的路径>
#JS的code coverage report的属性
#sonar.javascript.lcov.reportPath=<lcov.info文件的路径>
sonar.exclusions=**/*.spec.ts
sonar.showProfiling=true
4. 使用gulp执行Sonar检查
1) gulpfile.js
gulp.task('sonar', gulp.series('jest', 'runSonar')); gulp.task('jest', gulp.series('jest'));
2)jest的gulp任务配置
const gulp = require('gulp'); const run = require('gulp-run'); gulp.task('jest', jestRun); function jestRun() { return run('npm run jest', {verbosity: 3}).exec(); }
3)Sonar的gulp任务配置
可以在这里读取package.json中的版本信息,代替sonar-project.properties里面设置的version信息。
properties里面的其他配置也可以在这里设置。
const gulp = require('gulp'); const sonarqubeScanner = require('sonarqube-scanner'); const version = require('./../package.json').version; gulp.task('runSonar', function(callback) { sonarqubeScanner({ options : { "sonar.projectVersion": version } }, callback); });
4) package.json里面的scripts配置
"scripts": { "jest": "jest --coverage --no-cache", "sonar": "gulp sonar" }
5) 执行npm run sonar命令,会先用jest跑unit test然后再执行Sonar检查。jest生成的code coverage报告会与Sonar检查的结果一起在SonarQube页面上显示。另外,第一次跑Sonar检查后,会自动在SonarQube上创建工程。
5. 后台JS工程的配置与这个类似,只是直接用Jasmine进行单元测试
0) package.json的依赖配置
"istanbul": "^0.4.5", "jasmine": "^2.99.0", "sonarqube-scanner": "^2.1.0", "gulp-run": "^1.7.1"
1) package.json的scripts配置
"scripts": { "test:unit": "cross-env JASMINE_CONFIG_PATH=.jasmine.json istanbul cover ./node_modules/jasmine/bin/jasmine.js", "sonar": "gulp sonar"}
2) gulpfile.js的配置
gulp.task('test', gulp.series('test')); gulp.task('sonar', gulp.series('runTest', 'runSonar'));
3) runTest.js这个gulp task的配置
'use strict'; const gulp = require('gulp'); const run = require('gulp-run'); gulp.task('test', runTest); function runTest() { return run('npm run test:unit', {verbosity: 3}).exec(); }
4) sonar.js的gulp task的配置
'use strict'; const gulp = require('gulp'); const sonarqubeScanner = require('sonarqube-scanner'); const version = require('./../package.json').version; gulp.task('runSonar', function(callback) { sonarqubeScanner({ options : { "sonar.projectVersion": version } }, callback); });
5)使用npm run sonar执行单元测试并进行代码检查
6. Jenkins上的配置,只需要让Jankins build可以执行到npm run sonar命令就可以了。
7. 如果用angular cli的话,只需要在dependencies里面安装sonarqube-scanner, 然后在package.json里面配置
script: {
"sonar": "sonar-scanner"
}
然后用"npm run sonar"执行。sonar scanner会自动读取工程跟目录下的sonar-project.properties文件的内容。
相关推荐
SonarQube分析web端项目,遵循的基本内置规则;规则为常用激活规则,含bug、漏洞、坏味道三方面不同程度(严重、阻断、主要、次要、提示等级别)。
sonar检查规则指南:最新整理出的最全的sonar规则指南!!!
sonarLint 插件 供离线安装 ,用于检查代码 ,sonarLint 插件 ,用于检查代码 ,sonarLint 插件 ,用于检查代码 ,sonarLint 插件 ,用于检查代码
可以使用的sonar-all_package.tar已经部署安装测试使用 代码检查工具可以使用的sonar-all_package.tar已经部署安装测试使用 代码检查工具可以使用的sonar-all_package.tar已经部署安装测试使用 代码检查工具可以使用...
Sonarlint是一款强大的代码检测插件,用户可以IDE上实时检测自己的代码问题。本文详细介绍了Eclipse和Idea集成Sonarlint的步骤和使用方法
第一章、Sonar简介 2 第二章、Sonar原理 3 第三章、Sonarqube安装 5 3.1、下载安装包 5 3.2、 数据库连接方式 5 3.3、启动 7 ...4.3、启动并执行代码检查 13 4.4、查看执行结果 15 4.5、启动失败原因 17
Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的...
SonarLint 代码检查工具,IDEA 插件。
结合具体项目告诉您什么是sonar以及如何使用sonar,可以学到很多。
像拼写检查器一样,SonarLint 会显示缺陷并提供实时反馈和清晰的修复指导,以便从一开始就提供干净的代码。使用方法:下载完成后解压文件,里边有“SonarLint.VSIX-5.3.0.41207-2019.vsix”、“SonarLint.VSIX-6.9.0...
一步步讲解sonar的使用方式,主要以在linux上搭建sonar环境为基础进行描述。
Sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量,通 过 Eclipse 插件形式,可以支持包括 java, C#, C/C++, PL/SQL, Cobol, JS, Groovy 等等二十几种编程语言的代码质量管理与检测。
sonar安装使用及java规则详解:1 SonarQube安装及部署,sonar-scanner安装扫描,SonarLint插件动态检查,5 Sonar 代码检查规范
sonar eclipse插件sonarlint,原先的插件已经被启用,这是最新的,如果连接本地sonar服务器,需要在eclipse.ini中配置启动参数,参数为org.sonarlint.eclipse.core/server_url 值为sonar服务器地址,如果不配置默认...
sonar-cxx-plugin-0.9.3.jar
sonar的环境要求,数据库配置,安装配置,汉化以及使用说明
sonar,代码检查的好帮手,一行命令搞定,从此告别劣质代码
idea 安装sonarlint 无坑可用 操作步骤: 1、解压文件,将SonarLint文件夹复制到idea安装目录下的plugins下 2、重启idea 3、进入idea的setting,找到plugins,在里面勾选上SonarLint,应用确定 4、再次重启idea,...
sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包sonar汉化包
SonarQube分析Java项目,遵循的基本内置规则;规则为常用激活规则,含bug、漏洞、坏味道三方面不同程度(严重、阻断、主要、次要、提示等级别)。