10

我有 java 项目,我想将它与 SonarCloud 集成我遵循官方步骤:

使用 SonarQube 扫描仪检查代码 #

在检查您的代码之前,您需要:

  1. 在 SonarCloud 上为您的帐户创建用户身份验证令牌。
  2. 加密此令牌 travis encrypt abcdef0123456789 或在您的存储库设置中定义 SONAR_TOKEN
  3. 找到您想要推动项目的 SonarCloud.io 组织并获取其密钥
  4. 为您的项目创建一个 sonar-project.properties 文件(请参阅文档)。然后将以下行添加到您的 .travis.yml 文件中以触发分析:

添加我的 travis.yml 文件

 addons:
  sonarcloud:
    organization: "xelian-github"
    token:
      secure: ${SONAR_TOKEN}
    branches:
      - master
script:
  # other script steps might be done before running the actual analysis
  - sonar-scanner

其中 SONAR_TOKEN 是 Travis CI 上的一个变量,指向来自 SonarCloud 的密钥。(未加密)。 在此处输入图像描述 从 SonarCloud 我添加权限 在此处输入图像描述

但是当我开始 travis 构建时,出现以下错误:

Setting environment variables from repository settings
$ export SONAR_TOKEN=[secure]

 ....
ERROR: Error during SonarQube Scanner execution
ERROR: You're only authorized to execute a local (preview) SonarQube analysis without pushing the results to the SonarQube server. Please contact your SonarQube administrator.
ERROR: 
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.

在我看来,我的 travis 没有权限将结果上传到 SonarCloud。是令牌中的问题还是某些 Sonar 配置中的问题。

4

2 回答 2

10

在 SonarCloud 上配置项目的官方入口点是“入门”页面

  • 您会看到,对于 Maven 项目,您根本不需要创建sonar-project.properties文件

  • 您甚至可以找到在 SonarCloud 上分析的示例 Maven 项目的链接

于 2017-09-29T06:47:19.290 回答
0

最后我找到了解决方案。在 yml 文件的根路径中,您必须添加:

声纳-project.properties

# Required metadata
sonar.projectKey=java-sonar-runner-simple:master
sonar.projectName=Rss-service
sonar.projectVersion=1.0

# Comma-separated paths to directories with sources (required)
sonar.sources=/microservice-application/rss-reader-service/src/main/java
sonar.java.binaries=/microservice-application/rss-reader-service/target/classes

# Language
sonar.language=java

# Encoding of the source files
sonar.sourceEncoding=UTF-8

在 travis.yml 我添加: 脚本:

  # other script steps might be done before running the actual analysis
  - mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar

编辑

sonar-project.properties 没有必要。只有 Maven 目标才有意义。

于 2017-09-28T17:31:16.697 回答