SonarScanner 是当您的构建系统没有特定扫描仪时使用的扫描仪。

配置您的项目

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

# must be unique in a given SonarQube instance
sonar.projectKey=my:project # --- optional properties --- # defaults to project key
#sonar.projectName=My project
# defaults to 'not provided'
#sonar.projectVersion=1.0 # Path is relative to the sonar-project.properties file. Defaults to .
#sonar.sources=. # Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

从 zip 文件运行 SonarScanner

要从 zip 文件运行 SonarScanner,请按照下列步骤操作:

  1. 将下载的文件展开到您选择的目录中。我们将$install_directory在接下来的步骤中引用它。
  2. 通过编辑更新全局设置以指向您的 SonarQube 服务器$install_directory/conf/sonar-scanner.properties

    #----- Default SonarQube server
    #sonar.host.url=http://localhost:9000
  3. $install_directory/bin目录添加到您的路径中。
  4. 通过打开一个新的 shell 并执行命令sonar-scanner -hsonar-scanner.bat -h在 Windows 上)来验证您的安装。你应该得到这样的输出:

    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 上提供了适用于大多数语言的简单项目示例。可以浏览下载它们。您会在 sonarqube-scanner/src 下找到它们。

sonar-project.properties 的替代品

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

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

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

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

备用分析目录

如果要分析的文件不在分析开始的目录中,请使用该sonar.projectBaseDir属性将分析移动到其他目录。EG 分析开始于jenkins/jobs/myjob/workspace但要分析的文件在ftpdrop/cobol/project1. 这配置sonar-project.properties如下:

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

分析参数

可以在多个位置配置项目分析设置。这是层次结构:

  • 在 UI 中定义的全局属性适用于所有项目(从顶部栏中,转到管理 > 配置 > 常规设置
  • 在 UI 中定义的项目属性会覆盖全局属性值(在项目级别,转到“项目设置”>“常规设置”
  • 在项目分析配置文件或扫描仪配置文件中定义的项目分析参数会覆盖 UI 中定义的参数
  • 分析/命令行参数,在启动分析时定义(-D在命令行上),覆盖项目分析参数

请注意,只有通过 UI 设置的参数才会存储在数据库中。例如,如果您sonar.exclusions通过命令行覆盖特定项目的参数,它将不会存储在数据库中。后续分析或 SonarLint 中连接模式的分析仍将使用 UI 中定义的排除项执行,因此存储在 DB 中。

界面中显示的大多数全局和项目级别的属性键也可以设置为分析参数,但下面列出的参数只能在分析时设置。

有关与测试覆盖率和执行相关的特定于语言的参数,请参阅测试覆盖率和执行
有关与外部问题报告相关的特定于语言的参数,请参阅外部问题

分析参数区分大小写。

强制参数

服务器

钥匙 描述 默认
sonar.host.url 服务器网址 http://本地主机:9000

项目配置

钥匙 描述 默认
sonar.projectKey 项目的唯一键。允许的字符是:字母,数字-_.:,与至少一个非数字字符。 对于 Maven 项目,这默认为 <groupId>:<artifactId>

可选参数

项目标识

钥匙 描述 默认
sonar.projectName 将显示在 Web 界面上的项目名称。 <name>对于 Maven 项目,否则为项目密钥。如果未提供且数据库中已有名称,则不会被覆盖
sonar.projectVersion 项目版本。 <version> 对于 Maven 项目,否则“不提供”

验证

默认情况下,需要用户身份验证以防止匿名用户浏览和分析您实例上的项目,并且您在运行分析时需要传递这些参数。身份验证在全局安全 (/instance-administration/security/) 设置中强制执行。

当需要身份验证或“任何人”伪组没有执行分析的权限时,您需要提供具有执行分析权限的用户凭据,以便在其下运行分析。

钥匙 描述 默认
sonar.login 对项目具有执行分析权限的 SonarQube 用户的身份验证令牌或登录名。  
sonar.password 如果您使用身份验证令牌,请将其留空。如果您使用登录名,则这是与您的sonar.login用户名一起使用的密码。  

网页服务

钥匙 描述 默认
sonar.ws.timeout 等待 Web 服务调用响应的最长时间(以秒为单位)。仅当您在分析期间等待服务器响应 Web 服务调用时遇到超时时,从默认值修改此值才有用。 60

项目配置

钥匙 描述 默认
sonar.projectDescription 项目说明。 <description> 对于 Maven 项目
sonar.links.homepage 项目主页。 <url> 对于 Maven 项目
sonar.links.ci 持续集成。 <ciManagement><url> 对于 Maven 项目
sonar.links.issue 问题跟踪器。 <issueManagement><url> 对于 Maven 项目
sonar.links.scm 项目源代码库。 <scm><url> 对于 Maven 项目
sonar.sources 包含主要源文件的目录的逗号分隔路径。 从 Maven、Gradle、MSBuild 项目的构建系统读取。当既不提供sonar.sources也不sonar.tests提供时,默认为项目基目录。
sonar.tests 包含测试源文件的目录的逗号分隔路径。 从 Maven、Gradle、MSBuild 项目的构建系统中读取。否则默认为空。
sonar.sourceEncoding 源文件的编码。例如:UTF-8MacRomanShift_JIS。这个属性可以替换为project.build.sourceEncodingMaven 项目中的标准属性。可用编码列表取决于您的 JVM。 系统编码
sonar.externalIssuesReportPaths 通用问题报告的逗号分隔路径列表。  
sonar.projectDate 为分析指定一个日期。此参数仅在您需要追溯创建未分析项目的历史记录时才有用。格式为yyyy-MM-dd,例如:2010-12-01。由于您无法在数据库中最近一次之前执行分析,因此您必须按时间顺序重新创建您的项目历史记录,最旧的在前。注意:如果您希望创建长期运行的历史记录,您可能需要调整内部管理设置。 当前的日期
sonar.projectBaseDir 当您需要在不同于启动目录的目录中进行分析时,请使用此属性。EG 分析开始于jenkins/jobs/myjob/workspace但要分析的文件在ftpdrop/cobol/project1. 路径可以是相对的或绝对的。不是指定源目录,而是指定源目录的某个父目录。此处指定的值成为新的“分析目录”,然后指定其他路径,就好像分析从 的指定值开始一样sonar.projectBaseDir。注意分析过程会需要这个目录的写权限;这是sonar.working.directory意志被创造的地方。  
sonar.working.directory 为使用 SonarScanner 或 SonarScanner for Ant(大于 2.0 的版本)触发的分析设置工作目录。此属性与 MSBuild 的 SonarScanner 不兼容。路径必须是相对的,并且对于每个项目都是唯一的。注意:每次分析前都会删除指定的文件夹。 .scannerwork
sonar.scm.provider 此属性可用于明确告诉 SonarQube 您在项目中使用的是哪个 SCM(以防自动检测不起作用)。此属性的值始终为小写并取决于 SCM(例如,如果您使用的是 Git,则为“git”)。查看SCM 集成文档了解更多信息。  
sonar.scm.forceReloadAll 默认情况下,只检索已更改文件的责任信息。将此属性设置true为加载所有文件的责任信息。如果您觉得某些 SCM 数据已过时,但 SonarQube 未从 SCM 引擎获取最新信息,这可能很有用。  
sonar.scm.exclusions.disabled 对于支持的引擎,SCM 忽略的文件,即 中列出的文件.gitignore,也将自动被分析忽略。将此属性设置true为禁用该功能。如果sonar.scm.disabled设置为 ,则始终禁用 SCM 排除true  
sonar.scm.revision 覆盖分析结果中显示的修订,例如 Git sha1。默认值由 CI 环境提供或由检出源猜测。  
sonar.buildString 使用此属性传递的字符串将与分析一起存储并在 的结果中可用api/project_analyses/search,从而允许您稍后识别特定分析并获取其 ID 以用于api/project_analyses/set_baseline  
sonar.analysis.[yourKey] 此属性存根允许您将自定义键/值对插入分析上下文,这也将传递给webhooks  

重复

钥匙 描述 默认
sonar.cpd.${language}.minimumtokens 只要一行中至少有 100 个重复的标记(覆盖sonar.cpd.${language}.minimumTokens)分布在至少 10 行代码(覆盖sonar.cpd.${language}.minimumLines)中,一段代码就被认为是重复的。对于 Java 项目,如果一行中至少有 10 条语句,则无论标记和行数如何,都认为一段代码是重复的。此阈值不能被覆盖。 100
sonar.cpd.${language}.minimumLines (看上面) 10

分析日志

钥匙 描述 默认
sonar.log.level 控制分析期间生成的日志的数量/级别。DEBUGINFODEBUG级别显示日志+更多详细信息。类似于sonar.verbose=trueTRACE:显示DEBUG日志 + SonarScanner 执行的所有 ElasticSearch 查询和 Web API 调用的时间。 INFO
sonar.verbose 向客户端和服务器端分析日志添加更多详细信息。激活DEBUG扫描仪模式,并将客户端环境变量和系统属性添加到分析报告处理的服务器端日志中。注意:如果将密码等敏感信息存储为服务器端环境变量,则此设置可能会暴露这些信息。 错误的
sonar.scanner.dumpToFile 将传递给扫描仪 API 的完整属性列表输出到指定文件,作为调试分析的一种方式。  
sonar.scanner.metadataFilePath 设置扫描器写入report-task.txt文件的位置,其中包含ceTaskId. 的价值 sonar.working.directory

质量门

钥匙 描述 默认
sonar.qualitygate.wait 强制分析步骤轮询 SonarQube 实例并等待 Quality Gate 状态。如果没有其他选项,您可以使用它在 Quality Gate 失败时使管道构建失败。有关更多信息,请参阅CI 集成页面。  
sonar.qualitygate.timeout 设置扫描器应等待处理报告的秒数。 300

已弃用

列出这些参数是为了完整性,但已弃用,不应在新分析中使用。

钥匙 描述  
sonar.links.scm_dev 自 SQ 7.1 起已弃用 开发者连接。 <scm><developerConnection> 对于 Maven 项目

sonar-project.propertie分析参数的更多相关文章

  1. 网站分析参数(实例分析)SimilarWeb插件参数

      网站分析参数(实例分析)SimilarWeb插件参数 那么这些指标是什么意思呢? SimilarWeb Rank:类似网站排名Global Rank:全球网站排名第三栏一般是类别,大概网站从事范围 ...

  2. loadrunner脚本中写入脚本输出log到外部文件,分析参数取值方式

    loadrunner脚本中写入脚本输出log到外部文件,分析参数取值方式 分类: 心得 loadrunner 我的测试 2012-04-01 12:52 2340人阅读 评论(0) 收藏 举报 脚本l ...

  3. 从软件project的角度写机器学习3——主要监督学习算法的project性分析

    主要机器学习算法的project适用性分析 前段时间AlphaGo跟李世石的大战及相关的深度学习的新闻刷了一遍又一遍的朋友圈.只是这件事情,也仅仅是在机器学习的深度上进一步拓展,而机器学习的广度(也即 ...

  4. 面向对象的软件project——面向对象分析

    为了解决软件危机.一些IT前辈国产软件project这个词汇,软件project它被引入到整个软件开发过程的维护. 软件project从程序的设计角度能够分为两类.一类是面向结构的软件project. ...

  5. 开源网站流量统计系统Piwik源码分析——参数统计(一)

    Piwik现已改名为Matomo,这是一套国外著名的开源网站统计系统,类似于百度统计.Google Analytics等系统.最大的区别就是可以看到其中的源码,这正合我意.因为我一直对统计的系统很好奇 ...

  6. 错误overlay id is not a dependency project原因分析

    之前按下面配置,一直会报标题中错误,有的同学说改成<overlay><id></id></overlay>就可以了,然而我这里竟然错误依旧. 奇怪的是间 ...

  7. [SoapUI] 在Jenkins上传递project级别的参数给case

  8. mybatis(五):源码分析 - 参数映射流程

  9. MyBatis参数绑定规则及原理分析

    MyBatis参数的传递有几种不同的方法,本文通过测试用例出发,对其中的方式进行总结和说明,并对其部分源码进行分析. 一.测试用例(环境参考之前博客SSM接口编程一文 http://www.cnblo ...

随机推荐

  1. ysoserial CommonsColletions6分析

    CC6的话是一条比较通用的链,在JAVA7和8版本都可以使用,而触发点也是通过LazyMap的get方法. TiedMapEntry#hashCode 在CC5中,通过的是TiedMapEntry的t ...

  2. 截断误差VS舍入误差

     截断误差:是指计算某个算式时没有精确的计算结果,如积分计算,无穷级数计算等,使用极限的形式表达的,显然我们只能截取有限项进行计算,此时必定会有误差存在,这就是截断误差. 舍入误差:是指由于计算机表示 ...

  3. gentoo(贱兔) Linux作业系统的基本使用

    emerge是gentoo linux的portage包管理器的命令行工具emerge的基础使用:emerge 软件包名:安装某软件包 emerge nanoemerge --ask 软件包名:交互式 ...

  4. PHP中类的自动加载

    在之前,我们已经学习过Composer自动加载的原理,其实就是利用了PHP中的类自动加载的特性.在文末有该系列文章的链接. PHP中类的自动加载主要依靠的是__autoload()和spl_autol ...

  5. 关于PHP的方法参数类型约束

    在之前的文章PHP方法参数的那点事儿中,我们讲过关于PHP方法参数的一些小技巧.今天,我们带来的是更加深入的研究一下PHP中方法的参数类型. 在PHP5之后,PHP正式引入了方法参数类型约束.也就是如 ...

  6. Orchard Core入门配方和主题

    包含Orchard Core入门配方和主题 可以通过两个不同的NuGet包使用Orchard Core. OrchardCore.Application.Cms.Core.Targets Orchar ...

  7. (数据科学学习手札128)在matplotlib中添加富文本的最佳方式

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 长久以来,在使用matplotlib进行绘 ...

  8. 深入HTML5第二天

    sub(subscripted下标标签)和sup(superscripted上标标签) 内联元素:inline element  span(范围标签):内联元素inline element 特性:没有 ...

  9. django中admin一些方法

    1.概述:内容发布,负责添加,修改,删除内容及公告访问2.配置admin应用在settings文件中INSTALLED_APPS添加:'django.contrib.admin', 默认是已经添加好的 ...

  10. Vue组件间的数据传输

    1.父组件向子组件传输数据:自定义属性 1 //父组件 2 <Son :msg="message" :user="userinfo"></So ...