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