Подтвердите, что результат SonarQube предназначен для главной ветви

#jenkins #sonarqube

Вопрос:

Поскольку я не знаю, делает ли Сонар что-то странное, я просто хотел убедиться, что он действительно сканирует главную ветвь, а не ветвь функций.

введите описание изображения здесь

Люди из моей команды говорят, что SonarCube провел тест против ветви функций. Насколько я могу судить, он провел тест на главной ветке. Мы используем Sonar 7.9.1, и мое намерение состоит в том, чтобы работать с ветвью функций.

Фрагмент файла Дженкинса:

             stage('Send sonarqube reports') {
                sh """
                    sonar-scanner -Dsonar.host.url=${SONAR_CIRRUS} -Dsonar.java.libraries=/home/bcjenkins/.m2/repository/org/projectlombok/lombok/1.18.8/lombok-1.18.8.jar
                """
                JSON_STRING_SONAR_METRICS = sh (
                    script: "curl -X GET -H 'Content-Type: application/json' -H 'Accept: application/octet-stream' '${SONAR_CIRRUS}/api/qualitygates/project_status?projectKey=cirrus-bluecost-ssc-file-generator'",
                    returnStdout: true
                ).trim()
                println "The JSON_STRING_SONAR_METRICS=${JSON_STRING_SONAR_METRICS}";
                def sonarQube_Results = readJSON text: "${JSON_STRING_SONAR_METRICS}";
                def CodeCoverageEntryThreshold = sonarQube_Results.projectStatus.status;

                if(CodeCoverageEntryThreshold == "ERROR"){
                    error("[cirrus-bluecost-ssc-file-generator] Code qualitygates did not PASSED. Please check the results in our Sonarqube server.n"  
                    "tTo view the sonarqube results-> ${SONAR_CIRRUS}/dashboard?id=cirrus-bluecost-ssc-file-generatorn")
                }
            
                else if(CodeCoverageEntryThreshold == "FAILED"){
                    error("[cirrus-bluecost-ssc-file-generator] Code qualitygates did not PASSED. Please check the results in our Sonarqube server.n"  
                    "tTo view the sonarqube results-> ${SONAR_CIRRUS}/dashboard?id=cirrus-bluecost-ssc-file-generatorn")
                }

                else {
                    CodeCoverage_resultMsg = "[cirrus-bluecost-ssc-file-generator] Code qualitygates PASSED. Please check the results in our Sonarqube server.n"  
                    "tTo view the sonarqube results-> ${SONAR_CIRRUS}/dashboard?id=cirrus-bluecost-ssc-file-generatorn";
                    slackSend channel: "${SONAR_SLACK_CHANNEL}", color: 'good', failOnError: false, message: "${CodeCoverage_resultMsg}", teamDomain: 'ibm-ic2e-sprint', tokenCredentialId: SLACK_DOMAIN_CREDENTIALS
                }
            }
 

Ответ №1:

Что касается https://docs.sonarqube.org/latest/branches/overview/

Главная / Основная Ветвь

Это ветвь по умолчанию и обычно соответствует тому, что разрабатывается для вашего следующего выпуска. Эта ветвь обычно известна в команде разработчиков как «мастер» или «руководитель» и анализируется, когда не указаны конкретные параметры ветви. SonarQube помечает эту ветвь как основную, и в Community Edition это единственная ветвь
, которую вы можете анализировать.

Если мы используем версию сообщества SonarQube , мы можем анализировать main mater только ветку или.

Если нам нужно проанализировать другие ветви, мы должны использовать, по крайней мере, версию разработчика SonarQube , как указано ниже: —

Отраслевой анализ

Анализ филиалов доступен, начиная с версии для разработчиков.

Правка 1:

СонарКубе обеспечивает СонарЛинт (https://www.sonarlint.org/) как расширение IDE, в том числе с Eclipse, IntelliJ IDEA и так далее.

Мы можем настроить нашу среду IDE для подключения к внутреннему серверу SonarQube и использовать этот плагин для выполнения локального анализа на компьютере разработчика перед их объединением с основной или основной ветвью.

Правка 2:

Пример настройки SonarLint с помощью Eclipse приведен по адресу https://github.com/SonarSource/sonarlint-eclipse/wiki/Connected-Mode

Комментарии:

1. Спасибо @Charlee. Итак, если бы мы использовали только выпуск сообщества, невозможно было бы оценить наш код, используя его, прежде чем объединяться в главную ветвь? Это кажется огромным недостатком, жаль, что я не знаю, как его обойти.

2. Гидролокаторный сканер или гидролокатор-maven? Издание сообщества работает с «извлеченной ветвью» или ветвью по умолчанию. CE действительно не знает о филиалах, только код. Сбивающие с толку результаты, если вы продолжаете проверять разные ветви. Вы можете создать ветвь для объединения функций и всегда сканировать ее, возвращая изменения, если это не удастся. Используйте функции, объединяйтесь в RC или ветвь анализа, анализируйте это. Просто выберите, какой вы хотите видеть ветвь по умолчанию . СонарЛинт тоже может помочь.