SonarCloud - 没有显示 javascript for maven / bitbucket 项目的扫描结果



我可能错过了一些明显的东西,但我似乎无法获得 javascript 出现在 SonarCloud 中的扫描结果。存储库 95% 是一个有 5% Java 代码的角度应用程序。java代码扫描出现在SonarCloud中,但实际上我只需要扫描角度应用程序中的javascript。

很明显,我们连接到SonarCloud,但javascript没有出现任何内容。

我在pom.xml文件中添加了<sonar.language>js</sonar.language>,其效果是SonarCloud中根本没有显示扫描信息,可能是因为此属性取消了扫描除javascript以外的任何语言,并且javascript扫描配置不正确。

我只想扫描角度项目并在SonarCloud中报告结果。通过扫描构建角度项目的dist/portal目录,或通过扫描src/app中的底层 Typescript 文件。

如果同时扫描 java 代码也没问题。

感谢您提供的任何帮助或指示。

  • 使用的ALM:Bitbucket with Maven
  • 仓库语言:java、javascript(只需要扫描javascript(
  • 观察到错误:SonarCloud 中没有出现 javascript 的扫描结果

存储库的目录结构为:

- src
- app
- [rest of angular code]
- e2e
- [testing files]
- deploy
- pom.xml
- [java code for the deploy]
- bitbucket-pipelines.yml

这是pipeline.yml,也是使用maven运行sonarcloud的步骤:

caches:
sonar: ~/.sonar/cache
steps:  
- step: &buildArtifacts
name: Build and test
image:
name: [[NAME]]
aws:
access-key: $AWS_ACCESS_KEY
secret-key: $AWS_SECRET_KEY
caches:
- maven
- sonar
script:
- source prepare_environment.sh
- mvn -e clean verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
artifacts:
- artifact/**

这是deploy/目录中pom.xml内的属性:

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<sonar.language>js</sonar.language>
<sonar.sources>${project.basedir}/../dist/portal</sonar.sources>
</properties>

扫描 JS/TS 的最佳选择是自定义管道。

如果您不关心Java代码,只需要扫描Javascript和Typescript,那么使用CLI扫描程序可能是最好的选择,更具体地说,使用扫描管道最容易在Bitbucket Cloud上配置。你根本不需要使用Maven。

bitbucket-pipelinesYAML 文件中,删除(或注释掉(&buildArtifacts步骤中对org.sonarsource.scanner的引用:

mvn -e clean verify # org.sonarsource.scanner.maven:sonar-maven-plugin:sonar

然后创建一个新步骤来运行管道:

- step: &buildAndTestSonarCloud
name: Analyze with SonarCloud
caches:
- node
- sonar
script:
- npm update && npm install  
- pipe: sonarsource/sonarcloud-scan:0.1.5
variables:
SONAR_TOKEN: ${SONAR_TOKEN}
EXTRA_ARGS: '-Dsonar.sources=src/app'
SONAR_SCANNER_OPTS: -Xmx512m
DEBUG: "false"

您可能还需要使用如下所示的内容扩展可用于该步骤的内存:

definitions:
services:
docker: 
memory: 2048

最后,调用您的步骤:

pipelines:
default:
- step: *buildAndTestSonarCloud
- step: *buildArtifacts

这应该行得通。您应该在 JS/TS 上启动并运行。

如果您还想运行单元测试让 sonarcloud 跟踪您的测试覆盖率,请在npm update行下方添加以下内容:

- npm run test -- --code-coverage --no-watch --no-progress --browsers=ChromeHeadlessNoSandbox

这些EXTRA_ARGS为您的文件结构配置的:

'-Dsonar.tests=src -Dsonar.test.inclusions="**/testing/**,**/*.spec.ts" -Dsonar.typescript.lcov.reportPaths=coverage/lcov.info'

这对我有用,应该处理完整的配置。

注意:这不会查看存储库中的 Java 代码。如果您确实需要扫描Java代码,则需要更复杂的Maven实现。

最新更新