Sonar扫描之SonarScanner介绍

SonarScanner用于在构建系统没有指定scanner时使用。

项目配置

在你的项目根目录中创建一个名为 sonar-project.properties的配置文件

# 在给定的SonarQube实例中必须保持唯一
sonar.projectKey=my:project # --- 可选属性 ---
# 默认值为projectKey
#sonar.projectName=My project
# 默认值为'not provided'
#sonar.projectVersion=1.0 # 默认为 . 路径相对于sonar-project.properties而言
#sonar.sources=. # 源代码文件编码. 默认为系统默认编码
#sonar.sourceEncoding=UTF-8

从 zip 文件运行 SonarScanner

要从 zip 文件运行 SonarScanner,遵循下列步骤操作:

  1. 将下载的文件解压到你选择的目录,暂且假设该目录路径为:$install_directory

  2. 通过编辑$install_directory/conf/sonar-scanner.properties,更新全局配置以指向 SonarQube 服务器:

    #----- 设置默认的SonarQube服务器
    #sonar.host.url=http://localhost:9000
  3. $install_directory/bin目录添加到PATH环境变量中。

  4. 通过打开一个新的 shell 并执行命令sonar-scanner -h( Windows 上 sonar-scanner.bat -h)来验证安装是否正确,看到类似如下输出则表示成功:

    usage: sonar-scanner [options]
    
    Options:
    -D,--define <arg> Define property
    -h,--help Display help information
    -v,--version Display version information
    -X,--debug Produce execution debug output

    如果您需要查看更多的调试信息,您可以添加 -X--verbose-Dsonar.verbose=true命令选项

  5. 在项目根目录下运行以下命令以启动分析并传递身份验证令牌

    sonar-scanner -Dsonar.login=myAuthenticationToken

从 Docker 镜像运行 SonarScanner

使用以下命令,使用 SonarScanner Docker 镜像进行扫描:

docker run \
--rm \
-e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
-e SONAR_LOGIN="myAuthenticationToken" \
-v "${YOUR_REPO}:/usr/src" \
sonarsource/sonar-scanner-cli

扫描 C、C++ 或 ObjectiveC 项目

扫描包含 C、C++ 或 ObjectiveC 代码的项目需要一些额外的分析步骤。查看完整信息C/C++/Objective-C

示例项目

GitHub 上提供了适用于大多数语言的简单项目示例。点击浏览下载示例项目。

sonar-project.properties 的替代品

如果在项目的根目录下无法创建 sonar-project.properties 文件,有以下几种选择:

  • 可以通过命令行直接指定属性。例子:

    sonar-scanner -Dsonar.projectKey=myproject -Dsonar.sources=src1
  • 属性 project.settings 可用于指定项目配置文件的路径(此选项与sonar.projectBaseDir属性不兼容)。例子:

    sonar-scanner -Dproject.settings=../myproject.properties
  • 从 SonarScanner 2.4 开始,可以通过sonar.projectBaseDir属性设置要分析项目的根文件夹。如果未在命令行中指定sonar.projectKey,则该文件夹必须包含sonar-project.properties文件。可以在此项目配置文件中或通过命令行参数定义其他参数。

注意:命令行参数优先于sonar-project.properties配置,也就是说,当命令行和sonar-project.properties存在相同参数配置的情况下,以命令行的参数配置为准

可选分析目录

如果要分析的文件不在运行sonar-scanner程序时所在目录,那么需要使用sonar.projectBaseDir属性将分析移动到待分析文件所在目录,否则会导致分析失败,因为程序默认在当前目录下执行扫描。例如,在jenkins/jobs/myjob/workspace目录下运行sonar-scanner,但要分析的文件存在/home/ftpdrop/cobol/project1目录,sonar-project.properties配置如下:

sonar.projectBaseDir=/home/ftpdrop/cobol/project1
sonar.sources=src

高级Docker配置

以下部分提供了使用Docker运行sonar-scanner时的高级配置选项

使用--user选项,以非root用户运行Docker镜像,例如:

docker run \
--rm \
--user="$(id -u):$(id -g)" \
-e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
-v "${YOUR_REPO}:/usr/src" \
sonarsource/sonar-scanner-cli

注意:以非root用户运行容器时,确保该用户对挂载的目录(比如代码目录或者scanner缓存目录)有读写权限,否则可能会遇到权限相关问题。

为了防止SonarScanner在每次运行扫描时重新下载语言分析器,可以挂载一个供scanner存储下载内容的目录,以便在scanner运行期间可以重用下载的内容。在某些CI系统上,还需要将此目录添加到CI缓存配置中。以下命令将在运行之间存储和使用缓存:

docker run \
--rm \
-v ${YOUR_CACHE_DIR}:/opt/sonar-scanner/.sonar/cache \
-v ${YOUR_REPO}:/usr/src \
-e SONAR_HOST_URL="http://${SONARQUBE_URL}" \
sonarsource/sonar-scanner-cli

还可以使用SONAR_USER_HOME环境变量更scanner存储下载内容的位置。

故障排除

Java heap space error or java.lang.OutOfMemoryError

通过SONAR_SCANNER_OPTS环境变量增加内存

Linux:

export SONAR_SCANNER_OPTS="-Xmx512m"

Windows:

set SONAR_SCANNER_OPTS=-Xmx512m

Unsupported major.minor version

升级用于分析的Java版本,或使用一个本机包(嵌入自己的Java运行时)

Property missing: `sonar.cs.analyzer.projectOutPaths'. No protobuf files will be loaded for this project.

Scanner CLI无法分析.NET项目。请用SonarScanner for .NET。

参考连接

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

Sonar 扫描之SonarScanner介绍的更多相关文章

  1. sonar扫描java、js、jsp技术

    最近在弄sonar扫描的事情,之前一直只能扫描java代码,这样统计出来的数据上报领导很多开发人员不服(说我不用写jsp了不用写js了?), 那么好,于是乎继续整sonar,在官网中看到sonar其实 ...

  2. sonar扫描android项目配置 mac版

    一. 下载安装 JDK8以上  SonarQube   SonarQube Scanner 1. 解压缩SonarQube和SonarQube Scanner,直接运行SonarQube中bin目录下 ...

  3. Jenkins与sonar扫描的集成问题

    记录本周遇到的头疼了很久的一个问题,由于公司需要使用jenkins来自动管理构建项目,然后在关联sonar对项目代码质量进行审核. 接着坑爹的问题来了,原有的技术手段为项目构建成功后通过jenkins ...

  4. sonar扫描多模块的maven项目

    SonarQube Scanner,作为代码扫描的工具,通过它,将项目的代码读取并发送至SonarQube服务器中,才能让SonarQube进行代码分析. 可以认为SonarQube Scanner就 ...

  5. 【Java】 Maven多模块项目上传到Sonar扫描问题合集

    上传到Soanr时,项目有单元测试数,但是覆盖率为0 修改pom.xml <plugin> <groupId>org.apache.maven.plugins</grou ...

  6. 漏洞扫描工具AWVS介绍及安装教程

    PS:webug靶场全都通关了,你也就是个合格的新手了. 上次我们在通关webug靶场第三关的时候,提到一个漏洞扫描工具叫做AWVS.这次我们介绍一下它. 1 AWVS漏洞扫描工具 Acunetix ...

  7. sonar扫描java项目报错

    安装maven 配置path 验证maven,看到以下信息证明已经成功 扫描项目 扫描以下项目: kf-buss-nhgip-smartoffice-business-thirdparty 项目的配置 ...

  8. 扫描工具nmap介绍

    NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包. 简介 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推 ...

  9. web扫描工具-Nikto介绍与使用

    Nikto Perl语言开发的开源Web安全扫描器 web扫描模式:截断代理主动扫描 可以扫描的方面:软件版本搜索存在安全隐患的文件服务器配置漏洞WEB Application层面的安全隐患避免404 ...

  10. 获取sonar扫描结果

    api通过抓包获取 java 1.get和post方法 package com.tools.httpUtil; import java.io.BufferedReader; import java.i ...

随机推荐

  1. Android 13 - Media框架(7)- NuPlayer::Source

    关注公众号免费阅读全文,进入音视频开发技术分享群! Source 在播放器中起着拉流(Streaming)和解复用(demux)的作用,Source 设计的好坏直接影响到播放器的基础功能,我们这一节将 ...

  2. 音视频-YUV数据格式

    一.YUV格式 1)kCVPixelFormatType_420YpCbCr8PlanarFullRange = 'f420' 对应YUV I420格式 2)kCVPixelFormatType_42 ...

  3. itest(爱测试)开源接口测试&敏捷测试管理平台8.1.0发布

    (一)itest 简介 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1,又有丰富的统计分析.可按测试包分配测试用 ...

  4. c# .net mvc 使用百度Ueditor富文本框上传文件(图片,视频等)

    使用背景: 项目中需要用的富文本框去上传视频,图片的话大部分都是可以的.相对来说,国外的富文本框很成熟.但鉴于文档是英语,这里使用了百度的富文本框. 采用的api的方式,调用接口进行上传文件.话不多说 ...

  5. 3代 I3 3220 对比12代 G6900 测试 入手 上手 评测

    3代 I3 3220 对比12代 G6900 测试 入手 上手 评测 I3 3220 的CPU-Z ,和cinebench r23 跑分. G6900 的CPU-Z ,和cinebench r23 跑 ...

  6. Flashduty 案例分享 - 途游游戏

    Flashduty 作为功能完备的事件OnCall中心,可以接入云上.云下不同监控系统,统一做告警降噪分派.认领升级.排班协同,已经得到众多先进企业的认可.我们采访了一些典型客户代表,了解他们的痛点. ...

  7. ES Elasticsearch exception [type=search_phase_execution_exception, reason=all shards failed

    查看日志切分:sed -n '/2022-03-21 01:50:11.785/,/2022-03-21 02:25:01.130/p' test-2022-03-21-1.log > 2203 ...

  8. apollo数据库表查询方法-可以通过批量更新mysql数据库-比如批量更新IP地址等

    select `Id`, `AppId`, `Name` from ApolloPortalDB.App; select `NamespaceId`, `Key`, `Value`, `Comment ...

  9. 如何搭建私有的ChatGPT服务

    背景 是这样的,我们几个朋友众筹共享一个chatGPT4 Plus账号,且不想多人公用一个账号登录使用web版,想大家各自搞个本地的ChatGPT客户端,共用一个api-key. 我找了一圈,决定使用 ...

  10. 记一次 MatPlotLib 报错及解决方案:AttributeError: module 'matplotlib.cbook' has no attribute '_Stack'

    记一次 MatPlotLib 报错及解决方案 目录 记一次 MatPlotLib 报错及解决方案 解决方法 具体发生了什么 报错 log 1 内容 报错 log 2 内容 最近出现 MatPlotLi ...