`

使用Sonar检查Typsscript和Javascript

阅读更多

本地有两个工程,一个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文件的内容。

 

分享到:
评论

相关推荐

    sonar-Web_JavaScript检查规则指南.docx

    SonarQube分析web端项目,遵循的基本内置规则;规则为常用激活规则,含bug、漏洞、坏味道三方面不同程度(严重、阻断、主要、次要、提示等级别)。

    sonar检查规则指南

    sonar检查规则指南:最新整理出的最全的sonar规则指南!!!

    SonarLint idea代码检查工具 离线安装包

    sonarLint 插件 供离线安装 ,用于检查代码 ,sonarLint 插件 ,用于检查代码 ,sonarLint 插件 ,用于检查代码 ,sonarLint 插件 ,用于检查代码

    sonar-all-package.tar

    可以使用的sonar-all_package.tar已经部署安装测试使用 代码检查工具可以使用的sonar-all_package.tar已经部署安装测试使用 代码检查工具可以使用的sonar-all_package.tar已经部署安装测试使用 代码检查工具可以使用...

    Sonarlint中文使用手册

    Sonarlint是一款强大的代码检测插件,用户可以IDE上实时检测自己的代码问题。本文详细介绍了Eclipse和Idea集成Sonarlint的步骤和使用方法

    Sonar的安装和使用

    第一章、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使用经验

    Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的...

    SonarLint 代码检查工具

    SonarLint 代码检查工具,IDEA 插件。

    Sonar-sonarlint使用说明.pdf

    结合具体项目告诉您什么是sonar以及如何使用sonar,可以学到很多。

    SonarLint for Visual Studio 2019、2022

    像拼写检查器一样,SonarLint 会显示缺陷并提供实时反馈和清晰的修复指导,以便从一开始就提供干净的代码。使用方法:下载完成后解压文件,里边有“SonarLint.VSIX-5.3.0.41207-2019.vsix”、“SonarLint.VSIX-6.9.0...

    sonar使用教程

    一步步讲解sonar的使用方式,主要以在linux上搭建sonar环境为基础进行描述。

    SonarLint代码审查工具的安装与使用

    Sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量,通 过 Eclipse 插件形式,可以支持包括 java, C#, C/C++, PL/SQL, Cobol, JS, Groovy 等等二十几种编程语言的代码质量管理与检测。

    sonar安装使用及java规则详解

    sonar安装使用及java规则详解:1 SonarQube安装及部署,sonar-scanner安装扫描,SonarLint插件动态检查,5 Sonar 代码检查规范

    sonar eclipse插件sonarlint

    sonar eclipse插件sonarlint,原先的插件已经被启用,这是最新的,如果连接本地sonar服务器,需要在eclipse.ini中配置启动参数,参数为org.sonarlint.eclipse.core/server_url 值为sonar服务器地址,如果不配置默认...

    sonar-cxx-plugin-0.9.3.jar

    sonar-cxx-plugin-0.9.3.jar

    sonar安装及使用说明

    sonar的环境要求,数据库配置,安装配置,汉化以及使用说明

    sonar环境搭建与使用

    sonar,代码检查的好帮手,一行命令搞定,从此告别劣质代码

    idea 安装sonarlint 无坑

    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汉化包sonar汉化包

    sonar-JAVA检查规则指南.docx

    SonarQube分析Java项目,遵循的基本内置规则;规则为常用激活规则,含bug、漏洞、坏味道三方面不同程度(严重、阻断、主要、次要、提示等级别)。

Global site tag (gtag.js) - Google Analytics