Загрузка данных


include:
  - local: /bricks/test/code-quality.yml

code_quality:
  stage: test
  extends:
    - .code_quality_sonarqube
    - .rules_long
  ## Все пути для 'target' имеют префикс 'app/' из-за особенностей передачи артефактов при сборке
  variables:
    SONAR_EXCLUSIONS: 'app/target/site/jacoco/**/*,src/test/**/*,app/target/generated-sources/**/*.java,app/target/generated-test-sources/**/*.java,app/target/classes/generated/**/*.java,app/**/target/site/jacoco/**/*,**/src/test/**/*,app/**/target/generated-sources/**/*.java,app/**/target/generated-test-sources/**/*.java,app/**/target/classes/generated/**/*.java,app/**/target/classes/templates/**/*.js,src/main/resources/templates/**/*.js,deploy/envs/**/*,**/*.xsd,**/src/main/java/ru/tsc/crm/colljuragreementsservice/service/**/*'
    SONAR_CPD_EXCLUSIONS: 'app/target/generated-sources/**/*.java,app/target/generated-test-sources/**/*.java,app/target/classes/generated/**/*.java,app/**/target/generated-sources/**/*.java,app/**/target/generated-test-sources/**/*.java,app/**/target/classes/generated/**/*.java,app/**/target/classes/templates/**/*.js,src/main/resources/templates/**/*.js,**/model/**/*.java'
    SONAR_EXTRA: '-Dsonar.java.coveragePlugin=jacoco'
    CODE_QUALITY_RULES: short
  before_script:
    # Временное решение для проектов с <packaging>pom</packaging>
    - mkdir -p src
    # Для предотвращения ложноположительных срабатываний sonarqube при использовании lombok
    - >
        [ -d root/.m2/repository/org/projectlombok/lombok ] && export SONAR_EXTRA="${SONAR_EXTRA} -Dsonar.java.libraries=root/.m2/repository/org/projectlombok/lombok/*/lombok-*.jar"
    ## Заполнение sonar.java.binaries c проверкой существования директорий, иначе sonar-scanner завершается с ошибкой
    - |
        java_binaries=()
        shopt -s globstar extglob
        [ -d app/target ] && java_binaries[0]="app/target"
        stat -c %F app/!(target)/**/target 2>/dev/null | grep directory >/dev/null && java_binaries[1]="app/**/target"
        java_binaries_str=$(IFS=, ; echo -n "${java_binaries[*]}")
        [ -z "$java_binaries_str" ] && {
          ## Для предотвращения предупреждения сонара при отсутсвии хотя бы одного таргета
          mkdir -p app/target
          java_binaries_str=app/target
        }
        shopt -u globstar extglob
        export SONAR_EXTRA="${SONAR_EXTRA} -Dsonar.java.binaries=$java_binaries_str"
  dependencies:
    - build