关于sonar:SonarQube-API的2个坑

坑一/api/issues/search 查问违反规定的issue参数一:componentKeys参数二:rules/api/issues/search?componentKeys=Demo&rules=external_eslint_repo:indent 坑:当Demo我的项目没有守法external_eslint_repo:indent规定时,返回的后果不是为空,而是把Demo我的项目所有的违反规定全显示进去。与预期的后果不符,容易踩坑。 坑二SonarQube API反对最大返回后果10000,查问10000当前的后果会报.{ "errors": [ "msg": "cat return only the first 10000 results. 10010th result asked."]}起因:是因为SonarQube内置的ES配置缓存最大反对10000条。解决办法:细化查问的参数,放大查问返回的后果集。

January 25, 2022 · 1 min · jiezi

关于sonar:sonar搭建

最近在看公司QA部门的整体流程标准,看到有sonar这么个货色,大略查了下,发现是一款比拟好的代码品质检测工具,于是打算本人试一下,好用的话就进行推广。本篇次要介绍如何进行搭建以及遇到的坑有哪些。 搭建首先去官网下载一个sonar版本 点此下载,我这里下载的是目前为止的最新版本9.1.0的Developer版本。本人创立一个目录而后解压到该目录下。我这里用的是linux操作系统,进入到对应linux的执行目录(比方我的:/usr/local/sonar/sonarqube-9.1.0.47736/bin/linux-x86-64)下执行./sonar.sh start。对于7.9之前的版本,能够参考https://www.cnblogs.com/wesch...。 遇到的坑你没看错,就是这么简略。可能你发现和你网上查到的差很多,网上写的须要装置mysql,须要建库、须要对配置文件进行配置等都不须要。我一开始依照网上的办法进行搭建,始终失败,次要遇到的问题就是以下几点: 搭建了mysql数据库然而发现启动不起来,起因是7.9版本之后不反对mysql,默认用elasticsearch,并且包里也带了es相干的组件。jdk版本是1.8的,启动的时候局部jvm参数辨认不了,导致jvm启动失败。7.9之后须要jdk11反对,这样就须要你的linux环境须要反对多jdk版本,如何反对,请参考https://www.cnblogs.com/xu-do...用root用户启动失败,起因是默认启动的时候会主动启动自带的es,而es又须要专门新建的elasticsearch用户来启动,创立elasticsearch用户来搭建即可。总结在装置一个组件或者搭建平台的时候肯定要先确认好版本,参考网上的办法时须要确认是否合乎你的版本内容,不然真的会节约很多工夫。

October 14, 2021 · 1 min · jiezi

关于sonar:案例-如何以Sonar为例创建一个适用与所有企业的测试步骤

云效Flow中一个流水线运行的镜像被称为一个“步骤”,步骤是有一段形容 yaml 和一个 docker 镜像组成的一个最小运行单元,云效流水线 Flow中CLI 工具作为自定义步骤的进阶,以 Sonar 为例创立一个用于测试/扫描的步骤,并凋谢给所有企业。 筹备一个公网可拜访的 Sonar 服务。一个用于测试的代码库,以 maven 我的项目为例,确保 pom 文件中引入了 sonar 插件: <build> <pluginManagement> <plugins> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.4.0.905</version> </plugin> </plugins> </pluginManagement></build>本地开发参照Flow cli搭建好开发环境,初始化一个步骤: flow step init sonar-qubeBash sona-qubeBash 目录下会有三个文件 Dockerfile 用于构建步骤镜像,Dockerfile 中的根底镜像为云效提供的根底镜像,外面曾经内置了一些软件,尽量不要更改根底镜像,如需更改根底镜像,请确保新的根底镜像中装置了jq. step.sh 为在步骤中执行的脚本 step.yaml 用户形容步骤信息 前端编辑sonar-qube文件夹上面的step.yaml: 留神:image 须要改成用户本人的镜像地址,且必须为公开pull权限 ---name: SonarQube(预发)sign: sonar-qube-stagingdescription: SonarQube用于测试公开步骤category: 动态扫描image: registry.cn-beijing.aliyuncs.com/build-steps/sonar-qube-staging:1.0items: - label: Sonar服务器地址 name: STEP_SONAR_HOST type: inputname 用于定义步骤名称 sign 步骤惟一标识,全局惟一 category 步骤分类 image 步骤镜像地址,image 须要改成用户本人的镜像地址,且必须为公开pull权限 items: 步骤语言形容 请参考步骤语言Yaml形容。 ...

October 9, 2021 · 2 min · jiezi

关于sonar:搭建SonarQube代码质量平台提升代码质量

作者:幻好 起源:恒生LIGHT云社区 SonarQube 是治理代码品质一个开放平台,能够疾速的定位代码中潜在的或者显著的谬误。企业个别会搭建平台对我的项目的代码进行整体的校验,集体开发者也能在本机配置部署平台对相干代码进行剖析。本文将会介绍一下这个工具的装置、配置以及应用。 1.SonarQube 简介1. sonar是什么Sonar是一个用于代码品质治理的开源平台,用于治理代码的品质,通过插件模式能够反对二十几种语言的代码品质检测,通过多个维度的查看了疾速定位代码中潜在的或者显著的谬误。 2. SonarQube与Sonar SonarQube是sonar的服务端,相当于一个web服务器中的tomcat,用来公布利用,在线浏览剖析等。 2.装置配置1.下载 SonarQubesonarqubexxx.zip 并且解压即可,下载地址:http://www.sonarqube.org/downloads/ 举荐装置 v7.8版本,更加稳固,且反对MySQL。下载实现后解压后,进入sonarqube-7.8\bin\windows-x86-64 目录,点击 StartSonar.bat 启动即可,如下:SonarQube 服务启动后,默认拜访端口http://127.0.0.1:9000/about 2.配置数据库在mysql数据库新建一个库的名称为 sonar批改./conf/sonar.properties 的db 信息:sonar.jdbc.username=rootsonar.jdbc.password=rootsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false配置实现,重启 SonarQube ,数据库中会主动建表拜访9000端口而后进行登录即可,默认创立的用户名和明码都是admin登陆后,可在system选项卡看到零碎信息3.下载 Sonar-scannerSonar-scanner 工具是对源码进行扫描,并将后果保留到数据库以便用下面的sonarqube进行剖析下载地址:https://docs.sonarqube.org/7.8/analysis/scan/sonarscanner/3.1 配置mysql信息下载解压后,须要配置数据库信息,关上sonar-scanner-3.3.0.1492-windows\conf\sonar-scanner.properties 文件 sonar.jdbc.username=rootsonar.jdbc.password=rootsonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false3.2 配置环境变量配置 Sonar-scanner 文件的 bin 目录地址,配置到环境变量中配置实现后,在控制台验证,应用命令sonar-scanner4.中文汉化启动 SonarQube 服务后,进入目录Administration-Marketplace ,搜寻插件Chinese Pack 并装置,即可汉化。因为装置 SonarQube 版本较低,能够返回 Github 上下载汉化插件包 下载地址:https://github.com/xuhuisheng/sonar-l10n-zh/tree/sonar-l10n-zh-plugin-9.0下载插件包到目录Sonar\sonarqube-7.8\extensions\plugins ,而后重启服务即可汉化4.根本应用4.1配置代码规制在应用 Sonar 扫描代码之前,须要先配置好须要验证的规定,咱们能够在品质配置菜单,配置不同代码的验证规定 能够在右上角,本人创立或者导入备份的验证规定。Java 能够配置以下相干插件,有大厂配置的一些配置 sonar-findbugs 插件 下载地址:https://github.com/spotbugs/sonar-findbugssonar-pmd-p3c 插件 下载地址:https://github.com/caowenliang/sonar-pmd-p3c4.2创立扫描配置文件扫描我的项目前,须要在我的项目根目录创立扫描文件sonar-project.properties# sonar 登录账号密码sonar.login=admin      sonar.password=admin# must be unique in a given SonarQube instancesonar.projectKey=SCM4.0-SCM-JAVA# this is the name displayed in the SonarQube UI# 项目名称,和版本号sonar.projectName=SCM4.0-SCMsonar.projectVersion=SCM4.0V202103.1.0.20210901 # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.# Since SonarQube 4.2, this property is optional if sonar.modules is set. # If not set, SonarQube starts looking for source code from the directory containing # the sonar-project.properties file.# 我的项目源码门路,以及编译后的门路sonar.sources=src/main/javasonar.java.binaries=target/classes # Encoding of the source code. Default is default system encodingsonar.sourceEncoding=GBK创立配置文件后,能够在目录中关上控制台,输出命令sonar-scanner ,对我的项目代码进行扫描,扫描实现后就能在后盾查看5.可能遇到的问题SonarQube Unsupported JDBC driver provider: mysqljvm 1   | WrapperSimpleApp: Encountered an error running main: org.sonar.process.MessageException: Unsupported JDBC driver provider: mysqljvm 1   | org.sonar.process.MessageException: Unsupported JDBC driver provider: mysql起因是SonarQube 7.9以上版本已不再反对mysqlSonarQube启动报错:WrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedExceptiWrapperSimpleApp: Encountered an error running main: java.nio.file.AccessDeniedException: /opt/sonarqube-6.7.6/temp/conf/es/elasticsearch.yml   java.nio.file.AccessDeniedException: /opt/sonarqube-6.7.6/temp/conf/es/elasticsearch.yml   at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)   at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)   at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)   at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:244)   at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)   at java.nio.file.Files.delete(Files.java:1126)   at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:186)   at org.sonar.process.FileUtils2$DeleteRecursivelyFileVisitor.visitFile(FileUtils2.java:181)   at java.nio.file.Files.walkFileTree(Files.java:2670)   at java.nio.file.Files.walkFileTree(Files.java:2742)   at org.sonar.process.FileUtils2.deleteDirectoryImpl(FileUtils2.java:143)   at org.sonar.process.FileUtils2.deleteDirectory(FileUtils2.java:112)   at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:117)   at org.sonar.application.AppFileSystem$CleanTempDirFileVisitor.visitFile(AppFileSystem.java:101)   at java.nio.file.Files.walkFileTree(Files.java:2670)   at org.sonar.application.AppFileSystem.createOrCleanTempDirectory(AppFileSystem.java:96)   at org.sonar.application.AppFileSystem.reset(AppFileSystem.java:62)   at org.sonar.application.App.start(App.java:55)   at org.sonar.application.App.main(App.java:78)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)   at java.lang.reflect.Method.invoke(Method.java:498)   at org.tanukisoftware.wrapper.WrapperSimpleApp.run(WrapperSimpleApp.java:240)   at java.lang.Thread.run(Thread.java:748)   <-- Wrapper Stopped --> Wrapper Started as Daemon   Launching a JVM...   Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org     Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.解决办法:删除sonarqube temp目录下的所有文件即可有任何问题,欢送私信交换。

August 20, 2021 · 2 min · jiezi

关于sonar:SonarQube快速集成钉钉群机器人

SonarQube 钉钉机器人插件仓库地址https://github.com/viodo/sonar-dingtalk-plugin感觉有用的别忘了点个star哦 _ 应用办法1. 部署插件Windows双击运行即可sonar-dingtalk-plugin-windows.exe Linuxwget https://github.com/viodo/sonar-dingtalk-plugin/releases/download/v1.0.0/sonar-dingtalk-plugin-1.0.0-linuxchmod 777 sonar-dingtalk-plugin-1.0.0-linuxnohup ./sonar-dingtalk-plugin-1.0.0-linux &Macwget https://github.com/viodo/sonar-dingtalk-plugin/releases/download/v1.0.0/sonar-dingtalk-plugin-1.0.0-macchmod 777 sonar-dingtalk-plugin-1.0.0-macnohup ./sonar-dingtalk-plugin-1.0.0-mac &2. 增加钉钉群机器人在钉钉群设置->智能群助手->增加自定义机器人复制webhook地址中的access_token=前面的内容,前面会用到平安设置抉择自定义关键词,增加BUG和破绽 3. 设置SonarQube点击我的项目配置下的网络调用点击右上角创立按钮名称轻易填,URL填 http://插件部署电脑的IP:9001/dingtalk?access_token=这里填方才复制的机器人的token 4. 功败垂成在SonarQube实现代码扫描后,就会推送音讯到钉钉了

October 29, 2020 · 1 min · jiezi