SonarQube. Проверяем код на качество



    SonarQube — платформа для проверки кода на качество по правилам, основанным на соглашениях и стандартах. Поддерживает более 20 различных языков программирования.

    Вот здесь можно посмотреть все эти правила.

    Хочу поделиться небольшим руководством, как подружить sonarQube, PhpStorm и ваш проект. Все действия описаны для Windows, но все так же настраивается и под другую ОС.


    Для начала необходимо скачать демон SonarQube (на данный момент последняя версия 5.1), который запустит сервер и будет хранить данные о ваших тестах. Распакуем его в папку

    C:\sonarqube
    

    Затем скачаем плагин для языка программирования, который вы собираетесь проверять (для меня — это плагин PHP) и положим его в папку plugins

    C:\sonarqube\extensions\plugins
    

    Для того, чтобы запустить саму проверку, необходим runner, который мы скачиваем там же и, если необходимо, прописывем его в системных переменных.

    C:\sonar-runner
    

    Так же необходимо настроить файлы конфигурации тестов. Для этого в корне вашего проекта создадим файл sonar-project.properties со следующим содержанием:

    sonar.projectKey=runner // путь, по которому будет доступна страничка с результатами тестов в браузере
    sonar.projectName=PHPNAME // имя проекта
    sonar.projectVersion=1.0 // версия проверки
    sonar.sources=src // папки, которые будут проверяться(можно перечислить через запятую)
    sonar.language=php // язык программирования 
    sonar.dynamicAnalysis=false // включение\отключение функций, отвечающих на юнит тестирование
    sonar.sourceEncoding=UTF-8 // кодировка файлов 
    

    Перед тем, как запускать SonarQube, убедитесь, что на вашей машине стоит JavaVirtualMachine

    Запускаем SonarQube

     C:\sonarqube\bin\windows-x86-xx\StartSonar.bat
    

    Переходим в корень проекта и запускам от туда runner

    C:\sonar-runner\bin\sonar-runner.bat
    

    После успешного выполнения появится текст, примерно такого содержания.



    Если у вас тест падает, то для меня это было по нескольким причинам:
    Неправильно прописанные конфиги. Например, папка, которая указана к проверке не существует
    Не хватает памяти для JVM. Решается увеличениeм памяти для нашего демона:
    Необходимо в настройках SonarQube

    C:\sonarqube\conf\sonar.properties
    

    Прописать:

    %JAVA_EXEC% -Xmx1024m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m %SONAR_RUNNER_OPTS%
    

    Теперь мы можем посмотреть на результаты теста по адресу:

    http://localhost:9000/dashboard/index/runner
    

    В результатах можно посмотреть количество и виды ошибок, а так же подробно прочитать о каждой ошибке и примере ее исправления.



    Скачаем сам плагин для IDE:
    Зайдем в меню, для установки плагинов в PhpStorm: File->settings->plugins->BrowseRepositories
    Найдем там SonarQube и установим его.
    (Плагин разработан компанией Jetbrains, так что, скорее всего, его поддерживают и другие IDE этой компании).

    Настраиваем плагин:
    Зайдем в настройки плагина: File->settings->OtherSettings->SonarQube
    Для начала настроим сервер, к которму будет обращаться плагин, чтобы получить результаты теста. Для этого кликнем на кнопку add и впишем настройки.



    Затем загрузим результаты нашего теста. Для этого кликнем на зеленом плюсике, обновим список проектов кликнув по кнопке download resources, выберем наш проект и добавим его.



    Теперь можно проинспектировать код, смотреть какие несоответствия со стандартами были допущены и исправлять их.
    Проинспектируем код в PhpStorm: Code->InsectCode->wholeProject:



    Надеюсь, моя инструкция кому нибудь пригодится.
    • +12
    • 32,9k
    • 6
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 6
    • 0
      Спасибо, попробовал на C# проекте. Интересная штука
      • 0
        Столкнулся при применении Сонара со следующими проблемами:

        1. Не поддерживает подмодули Git. В результате каждый подпроект имеет по своему сонарному. Неудобно — жуть.
        2. Общая нестабильность работы с гитом, например если не получается blame, то весь анализ фейлится.
        3. (У меня питон) Мало анализаторов для питона, а для, к примеру, pylint, непонятно как прикручивать .pylintrc.
        4. У всех проектов одинаковый view (ссылки слева, нельзя настраивать индивидуально Dashboard-ы, т.е. абсолютно разноплановые проекты чешутся под одну гребенку.

        Если кто-то в курсе, как решать эти проблемы, то буду очень благодарен.

        Ах да! Всем командой гадаем, как же они измеряют technical debt.
        • 0
          Не знаю как для других ЯП, но для php в связке c PHPStorm гораздо лучше подходит Php Inspections (EA Extended) plugins.jetbrains.com/plugin/7622?pr=phpStorm, тк и больше типов issue поддерживает, и меньше телодвижений при установке и настройке.
          • 0
            Это немного разные вещи, сонар больше вещей может (полезных):
            • работать с проектами на смеси языков — и считать метрики по ним всем
            • предоставлять метрики
            • рапортовать технический долг (ой как врёт, зараза)


            Php Inspections (EA Extended) для старта можно дополнить Php Metrics — когда этого мало, уже пробовать сонар.

            Классика жанра — ставим сонар, не знаем что делать с его отчётами, сносим.

            Php Metrics ставится как плагин, сносить будет не жалко.
            • 0
              >работать с проектами на смеси языков — и считать метрики по ним всем
              то же самое для Php Inspections, только анализ других языков будут делать другие плагины, а запускаться inspection из одного места

              >предоставлять метрики
              >рапортовать технический долг (ой как врёт, зараза)
              эти фичи очень странно и некорректно работают, к сожалению(

              в остальном согласен с вами.
              • 0
                В общем доработка плагина и работа из ИДЕ, то что мы сейчас и делаем.

                Сонар оказался никому не нужен, ну нашему ПМу разве что — т.к. он бюджет на него потратил =).
                Солюшн Архитекторы плюнули на эту поделку, в работе от него толку нет: так и так код-ревью делать надо.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.