【Sonar】使用SonarQube检测Vue项目代码

这篇具有很好参考价值的文章主要介绍了【Sonar】使用SonarQube检测Vue项目代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文以Vue项目为例,介绍了如何配置Sonarqube检测工具环境

GitHub仓库

环境配置

确认环境依赖

https://docs.sonarqube.org/latest/requirements/requirements/

sonarqube运行依赖Java环境

sonaqube扫描前端代码,vue.js,前端,javascript

推荐Java 11

Sonarqube支持连接数据库输出检测结果,但目前涉及的功能中并未使用到数据库

安装本体

  1. 下载

    https://www.sonarqube.org/downloads/

    版本:本教程使用Community Edition 9.6,8.9.x LTS版本也可

  2. 初始化

    1. 运行sonar

      以windows环境为例,启动文件在以下目录

      sonaqube扫描前端代码,vue.js,前端,javascript

      出现以下语句即为启动成功

      sonaqube扫描前端代码,vue.js,前端,javascript

    2. 启动成功后,访问以下host:

      http://localhost:9000/
      
    3. 登陆,用户创建

      首次登陆,默认用户是admin,密码是admin

      sonaqube扫描前端代码,vue.js,前端,javascript

      首次登录后,会要求更改密码,与初始密码不能一致

      进入界面即可

下载sonar-scanner

  1. 下载

    https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

    sonaqube扫描前端代码,vue.js,前端,javascript

  2. 配置环境变量

    1. 添加系统变量SONAR_RUNNER_HOME

      sonaqube扫描前端代码,vue.js,前端,javascript

    2. 添加path变量

      sonaqube扫描前端代码,vue.js,前端,javascript

    3. Check一下:

      在CMD中,运行:

      sonar-scanner -v
      

      sonaqube扫描前端代码,vue.js,前端,javascript

安装插件

sonar插件的安装方法是将<插件名称>.jar文件放在以下目录:

<你的sonar根目录>\extensions\plugins

然后重新启动sonar

附:官方插件列表https://docs.sonarqube.org/latest/instance-administration/plugin-version-matrix/

sonaqube扫描前端代码,vue.js,前端,javascript

中文包

官网:https://github.com/xuhuisheng/sonar-l10n-zh/releases

下载jar文件后放在插件目录即可

PDF生成插件

最新版本:https://gitee.com/zzulj/sonar-pdf-plugin/releases/tag/v4.0.0

下载jar文件后放在插件目录即可

注:官网说明中最新支持到8.9.1,但是实际上9.6版本也可以正常使用

运行测试

创建项目

在创建项目中,选择Mannual,输入自定义的项目名称和key

sonaqube扫描前端代码,vue.js,前端,javascript

在这一步完成后,该项目就已经创建成功

创建测试配置文件

打开要测试项目的根目录

在要测试的目录下,创建sonar的配置文件sonar-project.properties

#sonarqube服务器地址,默认为9000
sonar.host.url=http://localhost:9000
#sonarqube用户名
sonar.login=<替换为你的用户名>
#sonarqube密码
sonar.password=<替换为你设置的密码>
#项目唯一标识(不能出现重复)
sonar.projectKey=<替换为你项目的key>
#项目名称
sonar.projectName=<替换为你的项目名称>
#源代码目录
sonar.sources=<你的源码目录>
# 用逗号分割来指定多个目录
# sonar.sources=src, tests
# 测试代码目录
sonar.tests = <你的测试代码目录>
#语言
sonar.language=js
# sonar.language=javascript
#源代码文件编码
sonar.sourceEncoding=UTF-8

# 更多参数:https://docs.sonarqube.org/latest/analysis/analysis-parameters/

请注意内容的替换

更多配置参数:https://docs.sonarqube.org/latest/analysis/analysis-parameters/

运行scanner

在根目录下运行:

sonar-scanner

等待扫描完毕,打开9000就可以查看扫描结果

sonaqube扫描前端代码,vue.js,前端,javascript

sonaqube扫描前端代码,vue.js,前端,javascript

报告生成

在已经进行测试的项目中,选择More下的Download Pdf Report即可

sonaqube扫描前端代码,vue.js,前端,javascript

报告样本见leafletDemo.pdf

sonar规则

sonar为项目特制规则集

参考资料:https://sqa.stackexchange.com/questions/24734/how-to-deactivate-a-rule-in-sonarqube/36023#36023

说明:

  • sonar为每一种语言预定义了检查规则集(即Quality Profile)
  • 在为项目运行检查的时候,sonar-scanner为当前项目绑定默认的Quality Profile
  • 因此如果需要手动编辑生效和不生效的规则,需要自主新建一个Quality Profile,并设置为当前项目的默认Quality Profile

操作流程:

  1. 新建自定义Quality Profile

    打开Quality Profiles标签,选择要自定义Profile的语言

    点击Copy,复制一份默认规则 (默认规则不可编辑

    为新规则集起一个好听的名字

    sonaqube扫描前端代码,vue.js,前端,javascript

  2. 编辑自定义的规则集

    进入新规则集编辑的入口可以有多个,可以这么进入:

    sonaqube扫描前端代码,vue.js,前端,javascript

    sonaqube扫描前端代码,vue.js,前端,javascript

    也可以这么进入(使用rules标签的筛选面板):

    sonaqube扫描前端代码,vue.js,前端,javascript

    点击右侧的Activate/Disactivate就可以指定生效或者不生效的规则

  3. 将新规则集指定为项目的默认规则集

    在项目页面,打开项目设置的下拉框

    sonaqube扫描前端代码,vue.js,前端,javascript

    更换默认规则

    sonaqube扫描前端代码,vue.js,前端,javascript

    在项目下,重新运行sonar-scanner,新规则即可生效

sonar编辑规则

首先,要编辑规则,需要确保目前用户具有权限

在administration-security-global permission中,确认两个权限被勾选

sonaqube扫描前端代码,vue.js,前端,javascript

sonar对预定义规则的编辑自由度较为有限,仅支持以下编辑:

  • 为规则扩充描述

    sonaqube扫描前端代码,vue.js,前端,javascript

  • 为规则编辑tag标签

    sonaqube扫描前端代码,vue.js,前端,javascript

    附:预定义规则标签目录

    https://docs.sonarqube.org/latest/user-guide/built-in-rule-tags/

sonar新建自定义规则

简单情况

简单情况下,sonar只支持从已有模板中派生规则,自由度较差

目前sonar支持自定义规则的模板有:(JS、TS、HTML、XML

sonaqube扫描前端代码,vue.js,前端,javascript

基于这些模板通常只能实现一些简单的错误检查,如对符合某正则表达式的注释的检查

案例:见demo

通过插件获取规则

使用一些规则插件,可以获取更多规则

官方给的插件列表中主要针对Java,为前端相关的规则插件基本不存在

在此仅提供获取更多规则的一条思路

自主编写代码规则

请见:https://docs.sonarqube.org/latest/extend/adding-coding-rules/

及:https://docs.sonarqube.org/latest/analysis/generic-issue/

(研究中

附1:为VSCode配置sonar环境

安装sonarlint插件

在VSCode插件页搜索Sonarlint即可

sonaqube扫描前端代码,vue.js,前端,javascript

为vscode连接sonarqube

见https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarlint-vscode#connected-mode

附2:sonar对Vue文件的支持

关于Sonar对Vue的支持,官方并没有进行详细的说明,仅在介绍页提到了支持

sonaqube扫描前端代码,vue.js,前端,javascript

因此为了测试Sonar检查对Vue的支持,进行了以下实验:

  • vue文件html部分

    sonaqube扫描前端代码,vue.js,前端,javascript

    检测成功

  • vue文件script部分

    sonaqube扫描前端代码,vue.js,前端,javascript

    检测成功

  • vue文件style部分

    sonaqube扫描前端代码,vue.js,前端,javascript

    检测成功

因此说明sonar对vue文件三个部分均可以正常检测

附3:sonar规则不起效的原因

在demo的初步扫描中,switch嵌套的问题似乎并没有被检查出来

sonaqube扫描前端代码,vue.js,前端,javascript

可能原因:

  • 错误的检查是逐步的,需要改正现有错误以后才能进一步发现其他错误 ×

  • 相关的rule没有activate √

    默认情况下,switch嵌套的检查未被activate

    sonaqube扫描前端代码,vue.js,前端,javascript

  • 重新运行后,错误被检查出来了
    sonaqube扫描前端代码,vue.js,前端,javascript文章来源地址https://www.toymoban.com/news/detail-670142.html

到了这里,关于【Sonar】使用SonarQube检测Vue项目代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Azure Devops集成 SonarQube检测代码质量

    SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 SonarQube. 通过插件形式,可以支持包括 Java,C#,C/C++、PL/SQL、Cobol、JavaScrip、Groovy、Ruby 、python等二十五种编程语言的代

    2024年01月16日
    浏览(44)
  • DevOps之Jenkins 集成 SonarQube 、Gitlab实现代码自动提交质量检测

    实验中相应服务的安装步骤略 准备相关服务器,并实现各个服务器的DNS解析 [root@ubuntu2204 ~]#cat /etc/bind/hailin.org.zone $TTL 1D @ IN SOA master admin ( 1 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS master master A 10.0.0.201 gitlab A 10.0.0.179 jenkins A 10.0.0.171 harbor A 10.0.0.201 sonarqube A 10.0.0.178 安

    2024年02月02日
    浏览(44)
  • sonar静态扫描安全靶场webgoat

    docker安装sonarqube,sonarQube静态代码扫描 - Joson6350 - 博客园 (cnblogs.com) 扫描结果  意思是这里的else if语句不会执行,因为ipAddressKnow为true,所以if 和else if的条件结果是一样的。 提示资源没有关闭,需要在finally中进行资源关闭,但是把资源关闭放到finally中由提示这样写不规范有

    2024年02月04日
    浏览(47)
  • 【代码质量管理开源平台】sonar的安装以及使用

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装、配置以及使用。 Sonar是一个用于代码质量管理的开源平台,用于管理代码的质量,通过插件形式可以支持二十几种语言的代码质量检测,通过多个维度的

    2024年02月05日
    浏览(47)
  • SonarQube扫描常见Bug、漏洞修复整理(持续更新中)

    这种提示是指可能存在空指针异常,需要增加空值检测。 说明:未做非空校验,可能产生空指针 解决方案:加上非空校验 解决方式:先判断或者先实例化,再访问里面的属性或者成员。 说明:int数运算最终再把结果转为long将有可能产生溢出 说明:防止内存泄露溢出,Thr

    2024年02月15日
    浏览(60)
  • sonar-scanner-Windows本地Python代码检查使用方法【免费下载sonar-scanner验证有效】

    背景介绍: sonar作为开源的代码扫描工具,sonar-scanner是windows扫描器。SonarQube是一个开源的代码质量管理平台,可以将 sonar-scanner扫描的结果进行分析。 公司有搭建SonarQube质量管理平台,支持本地扫描和gitlab集成扫描。现在需要将本地的代码进行扫描,于是尝试了Windows本地

    2024年02月09日
    浏览(232)
  • maven sonar 扫描单元测试覆盖率为0,但是单元测试数不为0

    最初配置如下: sonar 扫描后的单元测试覆盖率为0。但是但与测试数量不为0. 而配置的 sonar : 单元测试数基于 maven-surefire-plugin 插件 单元测试覆盖率基于 jacoco-maven-plugin 插件。 发现 maven 执行后没有 jacoco.exec 文件。导致 sonar 单元测试覆盖率为 0。并且没有下面的 jacoco 结果文

    2024年02月11日
    浏览(37)
  • SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;

    前面我们在Kubernetes中部署了SonarQube并与Jenkins集成扫描了前后端代码; 部署SonarQube链接 SonarQube与Jenkins集成扫描前后端代码链接 接下来记录一下如何将扫描报告通过邮件附件的形式推送到相应人的邮箱; https://gitee.com/zzulj/sonar-pdf-plugin/releases https://gitee.com/zzulj/sonar-pdf-plugin/r

    2024年02月07日
    浏览(55)
  • Windows配置SonarQube代码审查工具详细步骤(附带IDEA SonarLint插件使用)

    本篇博客使用的SonarQube版本为9.8,注意 JDK 1.8已经不能支持 Name Version DownLoad Link SonarQube 9.8 https://www.sonarsource.com/products/sonarqube/downloads/historical-downloads/ JDK 11 https://pan.quark.cn/s/06848544167c PostgreSQL 14.2 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 更多环境配置请参考:http

    2024年02月09日
    浏览(45)
  • vue项目安全漏洞扫描和修复

    npm audit  是npm 6 新增的一个命令,可以允许开发人员分析复杂的代码并查明特定的漏洞。 npm audit名称执行,需要包package.json和package-lock.json文件。它是通过分析 package-lock.json 文件,继而扫描我们的包分析是否包含漏洞的。 npm audit命令将项目中配置的依赖项的描述提交到默认注

    2024年02月06日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包