Статический анализ — SonarQube тестирует те же стандарты, что и Git pre-commit hook.

Мы проводим тесты статического анализа по двум пунктам:

  • На Git pre-commit hook, и в этом случае мы используем движки phpcs, phpmd, stylelint и eslint (ванильные установки + Drupal Coder для добавления стандартов Drupal)
  • Раз в неделю мы обновляем дашборд нашего проекта на SonarQube, который запускает следующие профили качества: Drupal (PHP), JS и SCSS.

Мы хотим привести наши стандарты в соответствие с единым стандартом, но использование разных движков делает это намного сложнее (или даже невозможно?). Я могу придумать несколько возможных способов добиться этого:

  • Вручную выровняйте правила как для предварительной фиксации, так и для SonarQube.
  • Используйте SonarQube для наших предварительных тестов
    Я не уверен в этом, поскольку, глядя на стандарты Drupal в SonarQube, кажется, что там гораздо меньше правил, чем в стандартах Drupal PHPCS (от Drupal Coder) - соответствующий вопрос, который я нашел по этому поводу
    (также еще один актуальный вопрос о согласование PHP-плагина SonarQube с phpCS )
  • Создайте собственный плагин для SonarQube с установленными нашими движками (ни за что..)

Идеальное решение, на мой взгляд, состоит в том, чтобы SonarQube читал файлы правил (например, phpcs.dist.xml) в репозитории Git, как и большинство инструментов статического анализа.

Я также видел SonarQube и Сопоставление правил stylelint — это единственное сопоставление, которое я нашел для этих движков.

Как мы можем решить эту проблему самым простым способом?


person Rotem    schedule 25.09.2017    source источник


Ответы (1)


Вы можете использовать PHPStan в интерфейсе командной строки точно так же, как вы, вероятно, используете стандартные проверки кодирования или тесты PHPUnit:

vendor/bin/phpstan analyse src --level=0

Установите это в свой хук до/после коммита, и вы готовы к работе. Подробнее читайте в короткое сообщение о первой установке PHPStan

person Tomas Votruba    schedule 05.01.2018
comment
PHPStan великолепен, но он все еще не отвечает на мой вопрос. PHPStan не предоставляет инструментальную панель, как SonarQube, и только тестирует PHP, а не стандарты кодирования (возможно, последнее неверно...). - person Rotem; 06.01.2018
comment
О, я вижу. Я снова прочитал вопрос с вашим комментарием, и теперь у меня есть лучший контекст. Итак, вы спрашиваете, как объединить phpstan, стандарты кодирования и линтеры в единую панель управления, чтобы увидеть результаты в SonarQube? Или в любом другом инструменте? Зачем вам это вообще нужно? - person Tomas Votruba; 06.01.2018
comment
Не совсем. Я спрашиваю, могу ли я использовать одинаковые стандарты кодирования и линтеры как в нашем хуке перед фиксацией, так и в панели управления SonarQube. (Другие инструменты, которые предоставляют панель инструментов с оценками, тенденциями и т. Д., Также приветствуются, но опять же - основная проблема заключается в том, чтобы иметь одинаковые стандарты для обоих тестов) :) - person Rotem; 07.01.2018
comment
Понимаю. Меня смутило название, где только хук и статический анализ, никакого SonarQube. В таком случае понятия не имею, так как не пользуюсь SonarQube :) Рекомендую обновить и сократить вопрос. Кто-то, кто знает SonarQube, определенно пропустит этот вопрос из-за названия, что было бы жаль, поскольку он или она может вам помочь. Я удалю свой ответ в ближайшее время. - person Tomas Votruba; 08.01.2018
comment
Вы можете оставить свой ответ, поскольку он прояснил нашу потребность. Новое название лучше предыдущего? - person Rotem; 08.01.2018
comment
Ладно, тогда сохраню. Это большое улучшение по сравнению с предыдущим. Что я понимаю до сих пор, вы спрашиваете, как включить phpcs в панель инструментов SonarQube (только 1 инструмент, потому что это все, что вам нужно, вы можете легко воспроизвести ответ на другой). -------- Но если вы спросите: я могу использовать одни и те же стандарты кодирования и линтеры как для нашего хука перед фиксацией, так и для нашей панели инструментов SonarQube, я бы сказал, просто попробуйте и посмотрите, не сработает ли что-то. Поскольку хук предварительной фиксации и SonarQube находятся в разных местах, это не должно быть проблемой (учтите, что я не знаю рабочий процесс SonarQube). - person Tomas Votruba; 08.01.2018
comment
Не уверен, что понимаю, что вы хотели сказать здесь, но SonarQube в нашем предварительном коммите менее предпочтителен, поскольку в нем отсутствуют некоторые тесты, которые есть в нашей конфигурации phpcs (всего один пример). - person Rotem; 09.01.2018
comment
Я буду более чем счастлив поделиться им здесь, но я не уверен, какой код вам нужно увидеть, наша предварительная фиксация довольно проста — запускайте линтеры для всех промежуточных файлов, пока у нас есть файлы конфигурации линтеров для нашего проекта. корневой каталог (например, phpcs.dist.xml) - person Rotem; 09.01.2018