Как установить и использовать yii2-code-sniffer или Php Code Sniffer в моем проекте Yii2? - PullRequest
0 голосов
/ 29 января 2019

Я пробовал Yii2 Code Sniffer Git Hook от RichWeber и squizlabs / PHP_CodeSniffer.Я не могу установить и управлять какими-либо вещами должным образом. Там я добавил несколько глобальных файлов композитора и некоторых поставщиков / bin /.Я понятия не имею, как я могу настроить его и как запустить его, полезно в моем проекте.

1 Ответ

0 голосов
/ 12 февраля 2019

Я использую phpcs и yii2 code standeard и добавлю это в composer.json

"yiisoft/yii2-coding-standards": "2.*", "squizlabs/php_codesniffer": "^3.0@dev"

И добавлю phpcs.xml.dist в корневой каталог и добавлю эти стандарты

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="Yii2">
    <description>Yii 2 Web Application Framework Coding Standard</description>

    <rule ref="PSR2">
        <!-- Property names MUST start with an initial underscore if they are private. -->
        <exclude name="PSR2.Classes.PropertyDeclaration.Underscore"/>

        <!-- Opening parenthesis of a multi-line function call must be the last content on the line. -->
        <!-- Closing parenthesis of a multi-line function call must be on a line by itself. -->
        <!-- Only one argument is allowed per line in a multi-line function call. -->
        <exclude name="PEAR.Functions.FunctionCallSignature"/>

        <!-- We don't have line length (line width) limits. -->
        <!--<exclude name="Generic.Files.LineLength"/>-->

        <!-- CASE keyword must be indented 4 spaces from SWITCH keyword. -->
        <exclude name="PSR2.ControlStructures.SwitchDeclaration"/>
    </rule>

    <!-- Property declaration rules. -->
    <!-- TODO: -->

    <!-- Function call signature. -->
    <!-- TODO: -->

    <!-- Switch declaration. -->
    <!-- TODO: -->

    <!-- ... other Yii2 specific rules. -->
    <rule ref="Generic.Arrays.DisallowLongArraySyntax"/>

    <!-- If string doesn't contain variables or single quotes, use single quotes. -->
    <rule ref="Squiz.Strings.DoubleQuoteUsage.NotRequired"/>

    <!-- Replaces Yii2_Sniffs_Files_SpacesAroundConcatSniff -->
    <rule ref="Squiz.Strings.ConcatenationSpacing">
        <properties>
            <property name="spacing" value="1" />
            <property name="ignoreNewlines" value="true" />
        </properties>
    </rule>

    <!-- Replaces Yii2_Sniffs_Properties_PrivatePropertiesUnderscoreSniff -->
    <rule ref="Squiz.NamingConventions.ValidVariableName.PrivateNoUnderscore"/>

    <!-- https://github.com/squizlabs/PHP_CodeSniffer/issues/1008 -->
    <rule ref="Squiz.ControlStructures.ControlSignature">
        <properties>
            <property name="requiredSpacesBeforeColon" value="0" />
        </properties>
    </rule>
    <!-- line length -->
    <rule ref="Generic.Files.LineLength">
        <properties>
            <property name="lineLimit" value="120" />
            <property name="absoluteLineLimit" value="120" />
        </properties>
     </rule>
     <rule ref="Generic.PHP.Syntax"/>
    <!-- Ignore for migrations. -->
    <!-- Ignore missing namespace for migrations -->
    <rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
        <exclude-pattern>m\d{6}_\d{6}_.+\.php$</exclude-pattern>
    </rule>
    <!-- Ignore camel caps format for class name of migrations -->
    <rule ref="Squiz.Classes.ValidClassName.NotCamelCaps">
        <exclude-pattern>m\d{6}_\d{6}_.+\.php$</exclude-pattern>
    </rule>

    <!-- Ignore for tests. -->
    <!-- Ignore method name prefixed with underscore to indicate visibility -->
    <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
        <exclude-pattern>tests?/*(Cest|Test).php$</exclude-pattern>
    </rule>
    <!-- Ignore declare new symbols and execute logic with side effects same file -->
    <rule ref="PSR1.Files.SideEffects.FoundWithSymbols">
        <exclude-pattern>/tests?*/_bootstrap.php$</exclude-pattern>
        <exclude-pattern>/web/(index|index-test).php$</exclude-pattern>
    </rule>
    <exclude-pattern>*/i18n/data/*</exclude-pattern>
    <exclude-pattern>*/views/errorHandler/*</exclude-pattern>
    <exclude-pattern>*/requirements/*</exclude-pattern>

 <exclude-pattern>ProfileTarget.php</exclude-pattern>
</ruleset>

Теперь используйте эту команду, чтобы проверить каждую стандартную папку, как я тестирую бэкэнд, как это vendor/bin/phpcs --encoding=utf-8 --extensions=php backend

, и чтобы исправить эту ошибку, запустите эту команду vendor/bin/phpcbf --encoding=utf-8 --extensions=php backend

Примечание: Вы должны удалить синтаксическую и синтаксическую ошибку самостоятельно.

...