Качество вашего кода так же важно, как тестирование вашего приложения. Недавно мы видели несколько статей, которые, надеюсь, помогли вам на пути к созданию более стабильного приложения. Сегодня мы рассмотрим SensioLabs Insight. Если вы использовали Symfony или Silex в прошлом, вы, вероятно, знакомы с SensioLabs, поскольку они являются основным спонсором платформы Symfony.
Что такое SensioLabs Insight?
SensioLabs Insight — это инструмент обеспечения качества, который можно использовать для определения качества вашего кода. Вы, наверное, уже знакомы с такими инструментами контроля качества, как, например, PHPMD, PHPCPD и PHPUnit. Хотя у SensioLabs Insight есть несколько подобных проверок, он также делает гораздо больше. Однако обратите внимание, что SensioLabs Insight работает не в вашей локальной среде, а как служба SensioLabs.
На момент написания статьи у него было 99 контрольных точек, которые он проверял. Он сканирует все: от простых вещей, таких как var_dump()
и TODO:
в вашем коде до проблем безопасности и недостатков производительности. Вы можете увидеть полный список того, что они анализируют на этой странице .
В общем, ваши файлы PHP будут проверены. Кроме того, он также способен проверять наличие искаженных файлов XML или YAML, потенциальные риски в файлах HTML и актуальность вашего composer.lock
. Поскольку этот инструмент является частью SensioLabs, он, конечно, способен проверять ваши проекты Symfony и Silex. Для проектов такого типа добавляются дополнительные контрольные точки, чтобы увидеть, был ли удален файл config.php
Symfony и был ли изменен значок. Однако SensioLabs также может проверить ваш Laravel, Drupal или любой другой PHP-проект.
В конце концов, это полный инструмент, который, вероятно, сообщит вам больше отзывов, чем вы могли себе представить. Давайте настроим наш первый проект и проверим анализ.
Подготовьте свой проект
Прежде чем мы сможем проанализировать наш первый проект, нам нужно сначала создать учетную запись в SensioLabs Connect. После этого мы можем подготовить наш проект. Если ваш проект с открытым исходным кодом и вы не против того, чтобы анализ стал общедоступным, вы можете свободно использовать SensioLabs Insight. Вы ограничены только определенными функциями, которые вы видите на их странице с ценами . Если вы работаете над частным проектом или сотрудничаете с другими разработчиками, вам необходимо перейти на платный план.
После того, как вы выбрали план, вы можете создать новый проект, предоставив ссылку на ваш личный репозиторий git или любого провайдера, такого как Github или Bitbucket.
После нажатия кнопки анализа SensioLabs Insight немедленно начнет проверять ваше приложение на наличие ошибок.
Проанализируйте свой проект
Давайте посмотрим на некоторый анализ. Для этого я использую проект с открытым исходным кодом под названием Jumph . Jumph — это проект Symfony 2, который существует уже пару месяцев, поэтому приведенный ниже пример приведен после уже точной настройки инфраструктуры Symfony.
SensioLabs Insight работает с системой медалей. В зависимости от того, сколько проблем найдено и насколько они серьезны, вы получаете определенную медаль. Лучшая медаль, которую вы можете получить, — это платиновая медаль, указывающая на то, что SensioLabs Insight не смог обнаружить никаких проблем.
Основываясь на проблемах, он также пытается определить, сколько работы у вас осталось, чтобы решить проблемы. В моем случае это займет у меня более 4 дней, чтобы все решить. По опыту могу сказать, что это не займет у вас так много времени.
Давайте перейдем к самой важной части: вопросам. В моем случае вы увидите, что я изменяю ресурс с помощью запроса GET. SensioLabs Insight предлагает изменить его на запрос POST, PUT или DELETE.
Далее вы увидите, что SensioLabs нашел дубликат кода и комментарии TODO. Хотя TODO не всегда должен быть проблемой, это ясно указывает на то, что ваша заявка еще не завершена.
Также вы заметите, что Symfony не обновлен. Очевидно, я использую более старую версию в моем файле composer.lock
чем текущий выпуск. В этом случае я использую 2.3.16, а 2.3.17 уже доступна.
Если вам интересно узнать, где находится проблема, вы можете нажать на определенную проблему, которая расширяет дополнительный информационный блок.
SensioLabs Insight четко указывает, в каком файле и в какой строке можно найти проблему. Вы также получите более четкое описание проблемы. В случае устаревшей платформы Symfony есть только описание.
Если вы работаете в команде над проектом, вы можете прокомментировать проблему, что позволит вам обсудить проблему в вашей команде. Если щелкнуть по open issue
, в вашей системе отслеживания ошибок open issue
новая проблема, которая позволит вам сообщить об этом своей команде. Если вы чувствуете, что предмет не является проблемой, вы можете легко проигнорировать его. Однако обратите внимание, что вы не получите платиновый значок за игнорирование проблем.
SensioLabs Insight может проверить гораздо больше проблем в вашем приложении. Лучшее, что вы можете сделать, это попробовать сами. Тем не менее, здесь у вас есть более расширенный отчет, который я получил ранее, в котором указано, что у моей заявки есть серьезные проблемы, с которыми приходится сталкиваться.
Вы заметите, что SensioLabs Insight выполняет некоторые проверки, которые вы знаете из других инструментов QA. Например, дублирование кода также может быть найдено в PHPCPD, где PHPMD может найти неиспользуемые свойства. Я не уверен, что SensioLabs Insight опирается на эти инструменты или внедрил их самостоятельно.
конфигурация
Пока что мы просто провели анализ нашего проекта. В какой-то момент вы можете исключить определенные тесты, изменить ветку или использовать базу данных. Вы можете настроить свой проект так, чтобы он соответствовал вашим критериям. Отредактировав проект, вы можете указать ветку для использования. У вас также есть специальное поле, в котором вы можете настроить в формате YAML, какие инструменты вы действительно хотите использовать.
Например, это часть конфигурации, которую вы можете использовать для настройки вашего проекта.
ignore_branches :
- gh - pages pre_composer_script : |
#!/bin/bash cp app / config / parameters . yml . dist app / config / parameters . yml sed - i - e "s/database_user:.*/database_user: root/" app / config / parameters . yml sed - i - e "s/database_password:.*/database_password: Secr3t/" app / config / parameters . yml post_composer_script : |
#!/bin/bash
./ app / console doctrine : database : create -- no - interaction ./ app / console doctrine : schema : create -- no - interaction ./ app / console doctrine : fixtures : load -- no - interaction php_ini : | extension = openssl . so extension = mcrypt . so global_exclude_dirs :
- vendor - vendors - test - tests - Tests
- spec - features - Fixtures
- DataFixtures exclude_patterns :
- app / check . php - app / SymfonyRequirements . php - web / config . php - web / app_ *. php rules : web . missing_robots_txt : enabled : true
пробный
Если вы в настоящее время разрабатываете проект с открытым исходным кодом, вы можете свободно использовать SensioLabs Insight. Существуют некоторые ограничения, например, вы можете просматривать только последние 5 анализов, например. SensioLabs был достаточно щедрым, чтобы поделиться с нами пробным ключом, что позволило вам протестировать SensioLabs Insight в течение одного месяца. Все, что вам нужно сделать, это зарегистрироваться, обновить пакет до любого, который вам нравится, и заполнить SLI-LD-141S
в качестве кода купона. Все, что вам нужно сделать, это добавить новый проект и проверить первый анализ, который он выполняет.
Вывод
Если вы читали мой обзор PHP-CI , вы уже заметили, что мне действительно нравится этот инструмент. Я считаю, что это приятное дополнение ко всем инструментам QA, которые мы знаем. Я думаю, что сила инструмента в основном в том, что он сканирует конкретные проблемы с фреймворками. Я могу представить, что многие люди забыли удалить некоторые файлы из стандартного фреймворка Symfony, и этот инструмент отслеживает такие случаи. Тем не менее, я думаю, что это также очень полезно для обычных проектов PHP — в этом посте осталось много проверок, которые SensioLabs Insight выполнит для вашего приложения.
Если вы используете пробный код купона, поделитесь с нами в комментариях своим опытом работы с SensioLabs Insight. Вас это сдуло или вы сразу получили платиновую медаль? Я хотел бы услышать от вас в комментариях ниже.