предисловие
В последнее время наша команда столкнулась с несколькими онлайн-проблемами в производственной среде, некоторые из которых более серьезные и напрямую влияют на использование пользовательских функций, чем недовольны руководители.Я попросил найти способ улучшить качество кода. время, качество кода инженерной разработки проекта В поле нашего зрения попал артефакт обнаружения, SonarQube.
1 Что делает сонаркуб
SonarQube® — это автоматизированный инструмент проверки кода для обнаружения ошибок, уязвимостей и запахов кода в коде. Его можно интегрировать в существующий рабочий процесс для непрерывной проверки кода в разных ветвях проекта и запросах на вытягивание. В виде плагинов он может поддерживать управление качеством кода и тестирование более чем 20 языков программирования, включая java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy и т. д. sonarqube может определять качество кода по следующим 7 параметрам, и как разработчику необходимо иметь дело как минимум с первыми 5 типами проблем с качеством кода.
1.1 Несоблюдение стандартов кода sonarqube может стандартизировать написание кода с помощью инструментов обнаружения правил кода, таких как CheckStyle.
1.2 Существующие недостатки и уязвимости Sonarqube может обнаруживать потенциальные дефекты с помощью инструментов обнаружения правил кода, таких как Findbugs.
1.3 Плохое распределение сложности Файлы, классы, методы и т. д. трудно изменить, если они слишком сложны, что затрудняет их понимание разработчиками, а без автоматизированного модульного тестирования изменения любого компонента в программе могут привести к необходимости комплексного регрессионного тестирования.
1.4 Повторить Очевидно, что код, который содержит много копий и вставок в программе, имеет низкое качество, sonarqube может показать серьезные повторы в исходном коде.
1.5 Недостаточные или чрезмерные комментарии Отсутствие комментариев сделает код менее читабельным, особенно когда кадровые перестановки неизбежны, читабельность программы сильно снизится, а слишком большое количество комментариев заставит разработчиков тратить слишком много сил на чтение комментариев, также вопреки первоначальному замыслу.
1.6 Отсутствие модульных тестов sonarqube может легко подсчитывать и отображать покрытие юнит-тестами.
1.7 Плохой дизайн С помощью sonarqube вы можете найти циклы, показать взаимозависимость между пакетами и классами и классами.Вы можете обнаружить пользовательские правила архитектуры.С помощью sonarqube вы можете управлять сторонними пакетами jar, а также вы можете использовать LCOM4 для обнаружения применения одной задачи правила Обнаружение связи. sonarqube может легко подсчитывать и отображать покрытие юнит-тестами.
Обзор:
Во время типичного процесса разработки:
1. Разработчики разрабатывают и объединяют код в среде IDE (предпочтительно с помощью SonarLint для получения мгновенной обратной связи в редакторе), а затем проверяют свой код в ALM.
2. Инструмент непрерывной интеграции (CI) организации может проверять, создавать и запускать модульные тесты, а встроенный сканер SonarQube может анализировать результаты.
3. Сканер публикует результаты на сервере SonarQube, который становится доступным для разработчиков через интерфейс SonarQube, электронную почту, уведомления в IDE (через SonarLint) и обработку запросов на вытягивание или слияние (при использовании Developer Edition и выше) отзывов. .
Экземпляр SonarQube содержит три компонента:
Сервер SonarQube выполняет следующий процесс:
1. Веб-сервер, предоставляющий пользовательский интерфейс SonarQube.
2. Поисковый сервер на базе Elasticsearch.
3. Механизм расчета отвечает за обработку отчета об анализе кода и его сохранение в базе данных SonarQube.
В базе данных хранится следующее:
Метрики и проблемы качества и безопасности кода, возникающие при сканировании кода.
Конфигурация экземпляра SonarQube.
Один или несколько сканеров, работающих на сервере сборки или непрерывной интеграции, могут анализировать проект.
Как построить гидролокатор
Адрес официального сайта:www.sonarqube.org/, выберите меню «Документация»
На появившейся странице документации вы можете выбрать версию, последняя версия 8.5. Пробовал три версии:
8.5: Это последняя версия, необходимо установить JDK11, и она поддерживает только базы данных oracle, sqlserver и PostgreSQL.
7.9: Это версия с долгосрочной поддержкой, хорошо документированная, также требует установки JDK11 и поддерживает только базы данных oracle, sqlserver и PostgreSQL.
7.6: Это старая версия, просто установите JDK8, поддержите базу данных oracle, sqlserver и PostgreSQL, а также базу данных mysql.
В начале мы установили версию 7.6, чтобы избежать проблем, потому что мы уже используем базу данных mysql, нет необходимости устанавливать другие базы данных, а также используется JDK8, а стоимость установки минимальна. Но позже выяснилось, что если вам нужно установить китайскую версию плагина или плагин mybatis, версия SonarQube, необходимая для этих плагинов, должна быть выше 7.9, и она должна работать на JDK11 или выше. Взвесив его, мы решили установить последнюю версию.
2.1 Установите JDK11 и postgreSQL Адрес загрузки JDK:Woohoo. Oracle.com/Java/techno…
Установка JDK относительно проста, я не буду здесь подробно рассказывать, в Интернете есть много руководств.
Сам PostgreSQL позиционирует себя как самую передовую в мире базу данных с открытым исходным кодом, обладающую множеством функций, предназначенных для помощи разработчикам в создании приложений, администраторам в защите целостности данных и создании отказоустойчивых сред, а также в управлении вашими данными независимо от размера ваших наборов данных. Помимо того, что PostgreSQL является бесплатным и с открытым исходным кодом, он также обладает высокой расширяемостью. Например, вы можете определять свои собственные типы данных, создавать собственные функции и даже писать код на разных языках программирования без перекомпиляции базы данных.
Установку и использование PostgreSQL можно настроить следующим образом:woohoo.brief.com/afraid/7's 133EF cc…
2.3 Установите сонаркуб из zip-файла
SonarQube не может работать в корневых системах на основе Unix, поэтому при необходимости создайте специальную учетную запись пользователя для SonarQube.
$SONARQUBE-HOME (ниже) указывает путь к каталогу, в который был распакован дистрибутив SonarQube.
Установить доступ к базе данных Отредактируйте $SonarquBe-Home/Conf/Sonar.properties, чтобы настроить параметры базы данных. Шаблоны можно использовать для каждой поддерживаемой базы данных. Просто отмените комментарий и настройте нужный шаблон, затем закомментируйте строку, посвященную H2:
sonar.jdbc.username=sonarqube
sonar.jdbc.password=mypassword
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
Настроить путь к хранилищу Elasticsearch По умолчанию данные Elasticsearch хранятся в $SONARQUBE-HOME/data, но это не рекомендуется для рабочих экземпляров. Вместо этого вы должны хранить эти данные в другом месте, предпочтительно на выделенном томе с быстрым вводом-выводом. Это не только поддерживает приемлемую производительность, но и упрощает обновление SonarQube.
Отредактируйте $SONARQUBE-HOME/conf/sonar.properties, чтобы настроить следующие параметры:
sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/temp
Пользователь, используемый для запуска SonarQube, должен иметь права на чтение и запись в эти каталоги.
Запустите веб-сервер Порт по умолчанию — «9000», а контекстный путь — «/». Эти значения можно изменить в $SONARQUBE-HOME/conf/sonar.properties:
sonar.web.host=192.0.0.1
sonar.web.port=80
sonar.web.context=/sonarqube
Выполните следующий скрипт, чтобы запустить сервер:
-
В Linux: запуск bin/linux-x86-64/sonar.sh
-
В macOS: запуск bin/macosx-universal-64/sonar.sh
-
В Windows: bin/windows-x86-64/StartSonar.bat
Настройка установки Java Если на сервере установлено несколько версий Java, может потребоваться явно указать, какая версия Java используется.
Чтобы изменить Java JVM, используемую SonarQube, отредактируйте $SONARQUBE-HOME/conf/wrapper.conf и обновите следующие строки:
wrapper.java.command=/path/to/my/jdk/bin/java Теперь вы можете просматривать SonarQube по адресу http://localhost:9000 (учетные данные системного администратора по умолчанию — admin/admin). При первом посещении этого адреса он останется на этой странице некоторое время, потому что SonarQube выполнит некоторую работу по инициализации, включая создание таблицы в пустой базе данных.
Страница, которая запускается после успешной инициализации:
Одновременно будет создано несколько таблиц:
2.3 Установите плагин В соответствии с личными потребностями вы можете установить плагин на китайском языке, по умолчанию для sonarqube используется английский интерфейс.
адрес гитхаба:GitHub.com/sonar Q UB Эко…
После загрузки, компиляции и упаковки проекта поместите банку в папку $SONARQUBE-HOME\extensions\plugins.
каталоге, а затем выполните команду: ./sonar.sh restart, чтобы перезапустить службу sonarqube.
Кроме того, есть плагин mybatis
гит адрес:git ee.com/mirrors/son…
Я лично использовал его и считаю, что он не очень полезен, но я могу расширить нужные мне функции на основе этого кода.
Как использовать сонаркуб
3.1 Интеграция сонаркуба в проект maven Сначала добавьте следующую конфигурацию в файл maven settings.xml:
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
http://localhost:9000
</sonar.host.url>
</properties>
</profile>
</profiles>
Затем добавьте конфигурацию в файл pom.xml:
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.3.0.603</version>
</plugin>
Запустите команду обнаружения кода в каталоге проекта: mvn clean complie -U -Dmaven.test.skip=true sonar:sonar
Когда вы видите эти слова, это означает, что обнаружение прошло успешно.
Затем просмотрите отчет об испытаниях в фоновом режиме сонара.
Отчет включает в себя: ошибки, уязвимости, запахи, горячие точки безопасности, охват, частоту повторения и т. д., и может быстро найти проблемные коды.
Нажмите на ошибку, чтобы просмотреть конкретный проблемный код:
Нет проблем с закрытием входного потока:
Проблема с нулевым указателем:
Неправильное использование:
SimpleDateFormat не должен быть определен как статический.
Обнаружено слишком много типов проблем с кодом, поэтому я не буду перечислять их все здесь. Короче говоря, запомните одно предложение: сонар — это круто. Он может не только выявлять проблемы с кодом, но и предлагать лучшие варианты написания и использования плохого кода.
пасхальные яйца
sonarqube очень мощный, и выше описано только его основное использование. В общем, мы можем использовать jenkins для настройки проекта, требующего обнаружения кода, загрузки кода из gitlab, выполнения команды maven compile and package code test и непосредственного создания отчета. Время, когда jenkins инициирует выполнение обнаружения кода: 1. Есть отправка кода или указано, что, например, в тестовой ветке есть отправка кода, что можно сделать с небольшим количеством проектов. 2. Запланированное выполнение, наша компания настроена на регулярное выполнение рано утром, потому что слишком много проектов развернуто jenkins, чтобы не влиять на нормальное развертывание проекта.
Кроме того, мы можем настроить правила выполнения обнаружения кода и разработать собственные плагины в соответствии с реальными требованиями проекта.Например, мы разработали плагины mybatis для сканирования несоответствия между именами файлов mapper и xml.
Одним словом, сонар очень мощный, настоятельно рекомендуется использовать его в своем проекте, он действительно может уменьшить количество скрытых ошибок и улучшить качество кода, если вы его используете, вы найдете его преимущества. Если вы хотите узнать больше об использовании сонара, вы можете ответить в общедоступной учетной записи: sonar, вы можете получить более подробную информацию об использовании. источник:Установить синий берег.blog.CSDN.net/article/decent…
Последнее слово (пожалуйста, обратите внимание, не проституируйте меня по пустякам)
Если эта статья оказалась для вас полезной или познавательной, отсканируйте QR-код и обратите внимание, ваша поддержка — самая большая мотивация для меня продолжать писать.
Попросите в один клик три ссылки: лайк, вперед и смотреть.
Следите за публикой: [Су Сан сказал о технологии], ответьте в официальном аккаунте: интервью, артефакты кода, руководства по разработке, управление временем имеют большие преимущества для фанатов, и ответьте: присоединяйтесь к группе, вы можете общаться и учиться со многими старшими производителями BAT. .