SonarQube создает платформу управления качеством кода (1)

база данных MySQL сервер SonarQube

SonarQubeЭто платформа анализа кода с открытым исходным кодом, используемая для непрерывного анализа и оценки качества кода и поддерживающая обнаружение более 20 языков программирования, таких как Java, JavaScript, C#, C и C++. С помощью SonarQube можно обнаружить потенциальные ошибки, уязвимости, спецификации кода, повторяющиеся коды, код без модульных тестов и т. д. в проекте, а также предоставляется интерфейс пользовательского интерфейса для просмотра и управления.

Архитектура

Architecture

SonarQube состоит из 4 частей:

  • SonarQube Server

    SonarQube Server запускает 3 основных процесса:
    Web Server: интерфейс управления пользовательским интерфейсом
    Search Server: поисковая служба на основе Elasticsearch.
    Compute Engine Server: Служба вычислительного движка, выполнение анализа кода и сохранение в базу данных SonarQube.

  • SonarQube Database

    Информация о конфигурации хранится экземпляр Sonarqube, проекты, представления и информация о снимках

  • SonarQube Scanners

    Анализ кода проекта для запуска одного или нескольких на сервере сборки/непрерывной интеграции

  • SonarQube Plugins

    Управление плагинами SonarQube

интегрированный

Integration

Выше приведена официальная блок-схема, официальная обеспечивает поддержку различных IDE.SonarLintПлагины, которые анализируют код в процессе кодирования, что может улучшить качество кода на этапе разработки. По идее, мы должны следить за результатами анализа и послушно оптимизировать код, но если разработчики не следуют рутине, оптимизируют или устанавливают SonarLint, они должны отправить код в SCM (типа: git, SVN, TFVC), в одну сторону можно добавить ссылку на обнаружение кода в конвейер слияния. Если есть проблема, она будет перехвачена напрямую, и отправка завершится ошибкой. Однако это слишком грубо и во многих случаях действительно не нужно. Другой способ — чтобы разрешить временную отправку кода в кодовую базу и повторный вход в кодовую базу.Проанализируйте и вернитесь к оптимизации, если возникнут проблемы (Кодовая база — единственный выход, выхода нет).

Прежде чем анализировать код в базе кода, нам необходимо создать инструмент непрерывной интеграции (например, Jenkins) и интегрировать в инструмент сканеры SonarQube.Согласно условиям, заданным инструментом непрерывной интеграции, код извлечения и сборки будет автоматически запускается, а затем запускаются сканеры SonarQube.Проанализируйте и отправьте отчет об анализе на сервер SonarQube, сервер SonarQube обрабатывает отчет об анализе и сохраняет его в базе данных SonarQube, и в то же время отправляет отчет об анализе в соответствующий ответственный за проверку, и, наконец, мы можем просмотреть результаты анализа через пользовательский интерфейс, проблемный код снова оптимизируется и так далее.

Требования к окружающей среде

В основном есть два требования, см.Prerequisite

  1. JDK 8
  2. MySQL (>=5.6 &&

Установите сервер SonarQube

  1. Скачать SonarQube, вообще пользуйтесь комьюнити версией, можно и другие версии попробовать, но в итоге нужны деньги
  2. После распаковки выберите соответствующую операционную систему в папке bin, чтобы запустить сервер SonarQube.

    
                                                                        
    # On Windows, execute:
    .\bin\windows-x86-xx\StartSonar.bat
     
    # On other operating system, execute:
    bin/[OS]/sonar.sh console
    
    
                                                                    

    StartSonar

    Из журнала запуска видно, что сервер SonarQube зависит от Elasticsearch, но его не нужно загружать отдельно. Пакет загрузки SonarQube уже включен. Если вы хотите повторно использовать ранее установленный Elasticsearch, отрегулируйте файл конфигурации. conf/sonar.properties по мере необходимости в разделе Elasticsearch.

  3. Доступ после успешного запуска:http://localhost:9000, учетная запись/пароль по умолчанию: admin/admin

SonarQube UI

Настройка базы данных SonarQube

После установки MySQL создайте базу данных сонара и измените соответствующие части файла конфигурации SonarQube /conf/sonar.properties MySQL.После перезапуска в базе данных сонара будут созданы некоторые связанные таблицы.


                                                            
#----- MySQL >=5.6 && <8.0
# Support of MySQL is dropped in Data Center Editions and deprecated in all other editions
# Only InnoDB storage engine is supported (not myISAM).
# Only the bundled driver is supported. It can not be changed.
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=
sonar.sorceEncoding=UTF-8


                                                        

Установите сканеры SonarQube

Выберите соответствующую версию операционной системыСкачать сканеры SonarQube, вы можете добавить путь к каталогу bin в Path после загрузки, а затем выполнить анализ кода непосредственно через глобальную команду sonar-scanner.

Анализ кода JavaScript-проектов

скачатьКод проекта JavaScript, создайте sonar-project.properties в корневом каталоге проекта:

javascript project

Добавьте следующую конфигурацию в sonar-project.properties:


                                                            
# Sonar项目标识,在 SonarQube实例下必须唯一
sonar.projectKey=test

# 在 SonarQube UI 中显示的项目名称
sonar.projectName=ApiDoc

# 项目版本
sonar.projectVersion=1.0
 
# 项目代码与 sonar-project.properties 文件的相对路径
sonar.sources=.
 
# 代码文件的编码
sonar.sourceEncoding=UTF-8

# 排除不参与代码分析的文件或目录
sonar.exclusions=node_modules/**/*,.idea/**/*


                                                        

Выполните команду в корневом каталоге проекта:


                                                            
sonar-scanner


                                                        

Analyzed

После успешного исполнения снова посетите:http://localhost:9000Сводка анализа проекта APIDOC и подсказки о нестандартной проблеме, а покрытие тестами равно 0.

Уведомление: "Отчет об анализе сжат за 205 мс, размер архива = 518 КБ" в журнале указывает размер сжатого отчета об анализе. В конечном итоге эта часть данных будет храниться в MySQL. Максимальный пакет данных, принимаемый MySQL, по умолчанию составляет 4 МБ. Если сжатый пакет слишком велик, отправка здесь не удастся, и в это время необходимо изменить значение max_allowed_packet MySQL.

ApiDoc Result

Code Smell

Повторно выполнить команду сонар-сканер после устранения неисправности, и результаты следующие:

ApiDoc Result2

При этом в базе данных сонара MySQL автоматически создаются связанные таблицы, а результаты анализа сохраняются.

Tables

При анализе и тестировании проекта JavaScript в локальном каталоге реальная ситуация должна основываться на SCM и взаимодействовать с инструментами непрерывной интеграции для автоматического анализа кода, которые будут представлены в следующей части.

Ссылка на ссылку