Сборка Maven Golang не сканирует Go - PullRequest
0 голосов
/ 18 октября 2019

Мы используем maven для создания проектов Golang, потому что мы являемся магазином на разных языках, а maven является текущим стандартом для сборок.

Наше первое приложение Go - это набор сервисов, обслуживающих проект Vue.

Файл jenkins вызывает mvn sonar: sonar следующим образом:

    stage('Sonar') {
        steps {
            echo 'Building Sonar'
            withSonarQubeEnv('Sonar') {
                // requires SonarQube Scanner for Maven 3.2+
                withMaven(
                        maven: 'Maven 3.5.3',
                        globalMavenSettingsConfig: 'GlobalSettingsRepo',
                        jdk: 'Java 8 Oracle',
                        options: [
                                artifactsPublisher(disabled: true),
                                jacocoPublisher(disabled: true)]) {
                    sh 'mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.4.0.905:sonar -U'
                }
            }
        }
    }

Я обновил родительский pom и pom внутри папки Go, добавив:

<dependencies>
    <dependency>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version>3.4.0.905</version>
    </dependency>
    <dependency>
        <groupId>org.sonarsource.go</groupId>
        <artifactId>sonar-go-plugin</artifactId>
        <version>1.0.0.1404</version>
    </dependency>
</dependencies>

Я также жестко запрограммировал GOPATH в свою папку Go в переменных окружения. Однако когда я запускаю сборку, сканер сонара сканирует ТОЛЬКО XML-файлы в проекте. Если я запускаю сканер сонара из командной строки, он анализирует код Go и код Vue.

Есть предложения?

1 Ответ

0 голосов
/ 21 октября 2019

Очевидно, что sonar-scanner проанализирует всю структуру вашего проекта по умолчанию и требует явных исключений, чтобы пропустить каталоги, которые явно не должны анализироваться, например, node_modules.

Плагин сонара Maven ожидает, что вы явно перечислите свой источниккаталоги. Я поместил следующие строки в дочерние файлы pom.xml, и все заработало так, как я ожидал.

Golang pom.xml:

<properties>
    <sonar.sources>src/go</sonar.sources>
</properties>

Vue pom.xml:

<properties>
    <sonar.sources>src/views,src/components,src/assets/js,src/assets/css</sonar.sources>
</properties>
...