Задать вопрос
  • Как проанализировать код большого проекта на PHP на наличие неиспользуемых кусков кода и файлов?

    kopyrin
    @kopyrin
    системный администратор, программист,
    Есть еще ряд полезных инструментов, которые могут пригодиться для тестирования качества кода:
    PHPDCD - Dead Code Detector (DCD) для PHP. Он сканирует в PHP проекте все неиспользуемые функции и методы и сообщает о них.
    $ composer global require 'sebastian/phpdcd=*'
    $ sudo ln -s ~/.composer/vendor/bin/phpdcd /usr/local/bin/phpdcd
    Пример проверки:
    project_directory$ phpdcd .
    PHPMD - PHP Mess Detector. Помогает найти в коде потенциальные проблемы, такие как возможные ошибки, субоптимальный код, усложненные выражения, неиспользуемые параметры, методы, свойства.
    $ composer global require 'phpmd/phpmd=2.2.*'
    $ sudo ln -s ~/.composer/vendor/bin/phpmd /usr/local/bin/phpmd
    Пример проверки:
    project_directory$ phpmd . text codesize,unusedcode,naming
    PHP Depend - показывает качество дизайна кода для расширяемости, повторного использования и сопровождения.
    $ composer global require 'pdepend/pdepend=*'
    $ sudo ln -s ~/.composer/vendor/bin/pdepend /usr/local/bin/pdepend
    Пример запуска
    phpDocumentor - инструмент для генерирования документации из PHP кода.
    $ composer global require 'phpdocumentor/phpdocumentor=*'
    $ sudo ln -s ~/.composer/vendor/bin/phpdoc /usr/local/bin/phpdoc
    Пример запуска:
    project_directory$ mkdir docs && phpdoc -d . -t docs
    PHP CodeBrowser - инструмент для создания HTML презентации PHP кода, где выделены участки с выявленными нарушениями по обеспечению качества инструментов, таких как PHP CodeSniffer или PHPMD.
    $ composer global require 'mayflower/php-codebrowser=~1.1'
    $ sudo ln -s ~/.composer/vendor/bin/phpcb /usr/local/bin/phpcb
    Пример запуска:
    project_directory$ mkdir cb && phpcb -s . -o cb
    PHP Copy/Paste Detector (PHPCPD) - инструмент для поиска дублированного кода.
    $ composer global require 'sebastian/phpcpd=*'
    $ sudo ln -s ~/.composer/vendor/bin/phpcpd /usr/local/bin/phpcpd
    Пример проверки:
    project_directory$ phpcpd .
    PHPLOC - инструмент для быстрого измерения размера и анализа структуры PHP проекта.
    $ composer global require 'phploc/phploc=*'
    $ sudo ln -s ~/.composer/vendor/bin/phploc /usr/local/bin/phploc
    Пример проверки:
    project_directory$ phploc --log-xml phploc.xml .
    PHP CodeSniffer - набор из двух PHP инструментов. Основной - phpcs, позволяет выявить нарушения стандартов кодирования в PHP, CSS и JS файлах. И второй - phpcbf, позволяет проводить автоматическую коррекцию стандартов. PHP CodeSniffer является важным инструментом , благодаря которому код остается чистым и последовательным.
    $ composer global require 'squizlabs/php_codesniffer=*'
    $ sudo ln -s ~/.composer/vendor/bin/phpcs /usr/local/bin/phpcs
    Дополнительная проверка стандарта Symfony2 для PHP CodeSniffer:
    $ cd ~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards
    $ git clone git://github.com/escapestudios/Symfony2-coding-standard.git Symfony2
    $ cd Symfony2
    $ git checkout 2.0.1
    Пример проверки:
    project_directory$ find . -type f -name '*.php' -exec phpcs --standard=Symfony2 '{}' ';'
    Ответ написан
    Комментировать
  • Почему в программировании используются моноширинные шрифты?

    Olej
    @Olej
    инженер, программист, преподаватель
    Почему в программировании используются моноширинные шрифты?

    В программировании не используются шрифты.
    В программировании используются мозги.
    Ответ написан
    Комментировать
  • Как с помощю rsync удалять лишние фалйы?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    man rsync
    ...
         --del                   an alias for --delete-during
         --delete                delete files that don't exist on sender
         --delete-before         receiver deletes before transfer (default)
         --delete-during         receiver deletes during xfer, not before
         --delete-after          receiver deletes after transfer, not before
         --delete-excluded       also delete excluded files on receiver
    ...
    Ответ написан
    Комментировать