SonarCloud - не отображаются результаты сканирования для Javascript для проекта maven / bitbucket - PullRequest
0 голосов
/ 25 мая 2020

Возможно, мне не хватает чего-то очевидного, но я не могу получить результаты сканирования для javascript, появляющегося в SonarCloud. Репозиторий - это 95% приложение angular с кодом 5% java. Сканирование кода java - это , появляющееся в SonarCloud, но на самом деле мне нужно только сканировать javascript в приложении angular.

Итак, очевидно, что мы подключены к SonarCloud, но ничего не отображается для javascript.

Я добавил <sonar.language>js</sonar.language> в файл pom. xml, в результате чего в SonarCloud не отображается никакая информация о сканировании, предположительно потому, что это свойство отменяет сканирование любого язык , кроме javascript, и сканирование javascript настроено неправильно.

Я просто хочу просканировать проект angular и сообщить результаты в SonarCloud. Либо путем сканирования каталога dist/portal, в котором построен проект angular, либо путем сканирования базовых файлов Typescript в src/app.

Это нормально, если код java также сканируется.

Спасибо за любую помощь или указатели, которые вы можете предоставить.

  • Используемый ALM: Bitbucket с Maven
  • Языки репозитория: java, javascript ( необходимо только сканировать javascript)
  • Обнаружена ошибка: Нет результатов сканирования для javascript, появляющегося в SonarCloud

Структура каталогов репозитория:

    - 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/**

И это свойства внутри pom.xml в каталоге deploy/:

    <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 Ответ

0 голосов
/ 01 июня 2020

Лучшим вариантом для сканирования JS / TS является пользовательский канал.

Если вам не нужен код Java и вам просто нужно сканировать Javascript и Typescript , то использование сканера для CLI , вероятно, является лучшим выбором, и, более конкретно, использование канала сканирования проще всего настроить в Bitbucket Cloud. Вам вообще не нужно использовать Maven.

В вашем bitbucket-pipelines YAML-файле удалите (или закомментируйте) ссылку на org.sonarsource.scanner на шаге &buildArtifacts:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...