当前位置: 首页 > 知识库问答 >
问题:

SonarCloud-对于Javascript for maven/bitbucket项目没有出现扫描结果

袁成化
2023-03-14

我可能遗漏了一些显而易见的东西,但我似乎无法获得javascript出现在SonarCloud中的扫描结果。存储库95%是一个angular应用程序,有5%的Java代码。Java代码扫描正在SonarCloud中出现,但实际上我只需要扫描angular应用程序中的javascript。

所以很明显,我们连接到了SonarCloud,但是JavaScript没有显示任何内容。

我将 js 添加到pom.xml文件中,其效果是在SonarCloud中根本不会出现扫描信息,可能是因为该属性取消了对javascript以外的任何语言的扫描,并且javascript扫描没有正确配置。

我只想扫描angular项目并在SonarCloud中报告结果。可以扫描构建angular项目的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>

共有1个答案

傅鸿波
2023-03-14

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

如果您不关心Java代码,只需要扫描Javascript和Typescript,那么使用scanner for CLI可能是最好的选择,甚至更具体地说,使用scan pipe最容易在Bitbucket云上配置。您根本不需要使用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实现。

 类似资料:
  • 问题内容: 我的PC上没有太多内存,处理器也很弱。尽管到目前为止,netbeans是我最喜欢的IDE,但在我现有的计算机上使用它几乎是难以忍受的,因为打开程序时,项目扫描会自动开始。 有没有办法防止Netbeans扫描项目? 问题答案: 嗨,乔治,我不知道这是否是答案,但是我右键单击并在不需要打开的项目上选择“关闭”。将您过去的所有项目都列出在那里是没有意义的。只需将您正在开发的那个打开。您始终可

  • 我已经在许多地方查阅了下面的错误,但似乎无法就解决方案或一个有效的解决方案达成共识。 “Maven项目扫描错误[项目路径];Java.lang.OutOfMemoryError:Java堆空间” 我将MAVEN_OPTS设置为“-xms512m-xmx1024m-xx:maxpermsize=1024” 我正在导入的项目是一个资产项目,有许多图像、图标、.swf和JS文件。 是不是我还需要什么,或

  • 热生成用于Python文件的Fortify文件。 一个类似的问题是Fortify,如何通过命令开始分析,但它列出了java的步骤。 要为python项目生成报告,必须使用--python-path。我尝试了以下步骤,但没有工作。 第一步:清洁,建造 步骤2:扫描:此步骤应生成fpr文件 这没有生成任何fpr文件。第二步给出如下警告: 我不确定我是否使用了正确的命令。 如何确保在目录和子目录中扫描所

  • 我正在与Bluez一起使用带有USB蓝牙加密狗的TinyCore linux盒。我们使用示例gatt服务器添加电池服务以发送降低的电池电量。使用蓝牙,我们的控制器(USB蓝牙加密狗)的信息显示服务: 我们的目标是在Android应用程序上阅读此内容,但在我们的自定义应用程序和示例BLE扫描应用程序中,我们看到的唯一服务是00001800(通用访问配置文件)和00001801(通用属性配置文件)。

  • 我有一个<代码>。NET Core项目我试图运行Fortify扫描。据我所知,目前还没有VS2017 Fortify插件可用,但我很好奇是否可以使用围绕插件工作,仍然执行Fortify扫描?如果是这样,我怎么能把它合并到我的清洁、翻译和扫描命令中? 当前Fortify版本: