index0h / code-style
index0h code standard, based on PSR-2.
dev-master
2014-09-09 11:39 UTC
Requires
- php: >=5.3.3
- squizlabs/php_codesniffer: 1.*
This package is not auto-updated.
Last update: 2024-11-09 15:41:14 UTC
README
Что такое CodeStyle?
CodeStyle - это набор валидаторов кода на базе PHP_CodeSniffer. Есть полная совместимость с PSR-2.
Установка и выполнение.
Через Composer.
В тег require, или require-dev необходимо добавить:
{ "require": { "index0h/CodeStyle": "dev-master" } }
Дальше необходимо применить обновления с тегом --dev если пакет был добвлен в require-dev.
composer.phar update
Выполнение проверки вашего проекта.
vendor/bin/CodeStyle.sh
Через git, или скачав архив.
Этот случай предполагает, что PHP_CodeSniffer устанавливается отдельно.
git clone https://github.com/index0h/CodeStyle.git
Выполнение.
phpcs --standard="/path/to/CodeStyle/CodeStyle" /path/to/my/project/
Описание отличий CodeStyle от PSR-2
Файлы.
- В одном файле может находится только один класс, или только один интерфейс.
- Файл должен содержать комментарии в заголовке в phpdoc формате.
- После комментария файла должен быть перевод строки.
- Комментарий файла должен начинаться на новой строке после <?php.
- Комментарий файла должен содержать краткое описание, после которого должна быть пустая строка комментария.
- Комментарий файла должен содержать теги category, package, subpackage, author, copyright, license, link в данном порядке.
- Значения тегов в комметарии файла должны быть выровнены.
- Пустые строки в комментарии файла запрещены всюду, кроме после короткого и полного комментария.
- Префикс комментария файла должыен быть: [пробел]*[пробел].
<?php /** * HashValidator.php. * * @category Helper * @package YiiHelper * @subpackage Validators * @author Roman Levishchenko <index.0h@gmail.com> * @copyright 2013 Roman Levishchenko <index.0h@gmail.com> * @license BSD-3-Clause https://github.com/index0h/yii-helper/blob/master/LICENSE * @version 0.0.1 * @link https://github.com/index0h/yii-helper/blob/master/ib/validators/HashValidator.php */
- Файл должен заканчиваться одной пустой строкой.
- Строка должна быть не более 120 символов.
- После namespace должен быть перевод строки.
Общее.
- Математические, логические, строчные и присваивание должны быть разделены одним пробелом.
// НЕ ПРАВИЛЬНО. $a=1+2+3+4; // ПРАВИЛЬНО. $a = 1 + 2 + 3 + 4;
- Запрещено использование for, в случае если больше подходит while.
// НЕ ПРАВИЛЬНО. for (;;) {
- Запрещено использование пустых инструкций.
// НЕ ПРАВИЛЬНО. if ($someVar === false) { }
- Запрещено использовать безусловные условия.
// НЕ ПРАВИЛЬНО. if (false) {
- Запрещено использование двойных кавачек там, где это не обязательно.
// НЕ ПРАВИЛЬНО. $a = "some text"; // ПРАВИЛЬНО. $a = 'some text'; $a = "some text {$here}";
- Запрещено использование echo в виде функции.
// НЕ ПРАВИЛЬНО. echo("some text"); // ПРАВИЛЬНО. echo 'some text';
- Запрещено использование "@" для скрытия ошибок.
// НЕ ПРАВИЛЬНО. @someFunc(); // ПРАВИЛЬНО. try { someFunc(); ...
- Запрещено использовать функции eval и ob_end_flush.
- Запрещено использование функций со статусом forbidden, или deprecated.
- Инструкиця catch должна содержать комментарий.
- Запрещено использование синтаксиса heredoc: <<<END.
- Запрещено использования size-функций, в циклах.
- Запрещено выполнять несколько операция на одной строке.
- Запрещено использование конкатенации в случаях, где она не нужна.
// НЕ ПРАВИЛЬНО. $a = 'some' . ' text ' . 'here'; // ПРАВИЛЬНО. $a = 'some text here';
- Запрещено использование выражений такого типа: $a = $a + 1;
- Запрещено присваивание неинициализированных объектов.
Классы.
- Класс должен содержать комментарий в phpdoc формате.
- В комментарии класса разрешены только короткое и длинныое описание.
- В комментарии класса короткое описание обязательно.
- Запрещено именование конструктора и деструктора в C++ стиле.
// НЕ ПРАВИЛЬНО. public function MyClassName() { // ПРАВИЛЬНО. public function __construct() {
Методы.
- Глобальные функции запрещены.
- Запрещены методы с мертвым кодом.
public function myDeadCode() { $a = 1; return true; // Мертвый код. $a = 2; }
- Запрещено использование $this в статическом методе.
- Запрещено передавать переменную по ссылке при вызове метода.
// НЕ ПРАВИЛЬНО. public function myFunc($a) { ... $myObj->myFunc(&$a); // ПРАВИЛЬНО. public function myFunc(&$a) { ... $myObj->myFunc($a);
- Запрещены методы с неиспользуемыми параметрами.
- Запрещено переопределение методов, выполняющее тольео родительский.
// НЕ ПРАВИЛЬНО. public function __construct($a, $b) { parent::__construct($a, $b); }