#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 или ветвь анализа, анализируйте это. Просто выберите, какой вы хотите видеть ветвь по умолчанию . СонарЛинт тоже может помочь.