PHPcs xml config disable some rules
Asked Answered
D

3

7

I understand how phpcs is configurated with xml, but can not find how I disable some sniffs. This ist my current conf (don‘t even know if this is correct):

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="custom" 
  xmlns="http://pmd.sf.net/ruleset/1.0.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
  <rule ref="rulesets/codesize.xml"/>
  <rule ref="rulesets/controversial.xml/Superglobals"/>
  <rule ref="rulesets/controversial.xml/CamelCaseParameterName"/>
  <rule ref="rulesets/controversial.xml/CamelCaseVariableName"/>
  <rule ref="rulesets/design.xml"/>
  <rule ref="rulesets/naming.xml/ShortMethodName"/>
  <rule ref="rulesets/naming.xml/ConstructorWithNameAsEnclosingClass"/>
  <rule ref="rulesets/naming.xml/ConstantNamingConventions"/>
  <rule ref="rulesets/naming.xml/BooleanGetMethodName">
    <properties>
      <property name="checkParameterizedMethods" value="true"/>
    </properties>
  </rule>
  <rule ref="rulesets/unusedcode.xml"/>

  <arg name="tab-width" value="2"/>
  <rule ref="Generic.WhiteSpace.ScopeIndent">
    <properties>
      <property name="indent" value="2"/>
    </properties>
  </rule>

  <rule ref="Generic.Files.LineLength">
    <properties>
      <property name="lineLimit" value="140"/>
      <property name="absoluteLineLimit" value="0"/>
    </properties>
  </rule>
</ruleset>

and I want to disable these:

  • [phpcs] @copyright tag must contain a year and the name of the copyright holder all doc comment sniffs (I don‘t need them)
  • [phpcs] PHP version not specified
  • [phpcs] There must be exactly one blank line before the tags in a doc comment
  • [phpcs] The open comment tag must be the only content on the line
  • [phpcs] Missing short description in doc comment
  • [phpcs] The close comment tag must be the only content on the line
  • [phpcs] Line indented incorrectly; expected at least 4 spaces, found 2 I use two spaces!
  • [phpcs] Missing file doc comment
  • [phpcs] Line exceeds 85 characters; contains 91 characters I would like to have a max of 140

and if I want to add more, where can I search the possible configurations?

Drava answered 20/6, 2018 at 9:35 Comment(3)
Maybe the Advanced Usage Manual (Limiting Results to Specific Sniffs) can helpFurcula
Yeah perfect for command line configuration, but I want to have it stored in my xmlDrava
Maybe the Annotated ruleset Manual can help?Furcula
D
0

Thanks to you all, I found a way: http://edorian.github.io/php-coding-standard-generator/#phpcs

Tried it before and it did not work and found out that I have to click on phpcs (looked selected in the first moment).

Drava answered 20/6, 2018 at 13:42 Comment(0)
N
9

An alternative way of ignoring rules is to use the --exclude flag.

vendor/bin/phpcs --standard=PSR2  --exclude=Generic.Files.LineLength,Generic.WhiteSpace.ScopeIndent app/

In order to find the rule name to exclude, find your corresponding ruleset in following directory:

vendor/squizlabs/php_codesniffer/src/Standards/<coding standard>/ruleset.xml

The rule name will be in the ref node:

 <rule ref="Generic.Files.LineLength">
        <properties>
            <property name="lineLimit" value="120"/>
            <property name="absoluteLineLimit" value="0"/>
        </properties>
 </rule>

It's quicker & less cumbersome than creating a separate ruleset.

Noto answered 24/8, 2019 at 7:42 Comment(0)
C
7

I would suggest finding the most similar ruleset you can, and making a copy which does not include the specified sniffs.

The Annotated ruleset.xml example includes a block that excludes some sniffs from a rule, along with the usage of a custom rule set.

 <!--
    Include all sniffs in the Squiz standard except one. Note that
    the name of the sniff being excluded is the code that the sniff
    is given by PHP_CodeSniffer and is based on the file name and
    path of the sniff class. You can display these codes using the
    -s command line argument when checking a file.
 -->
 <rule ref="Squiz">
  <exclude name="Squiz.PHP.CommentedOutCode"/>
 </rule>

Most of the work here is to find out how each sniff is being included, which can be found with a GitHub search for the message (example) if it's not listed anywhere else.

Christman answered 20/6, 2018 at 10:38 Comment(0)
D
0

Thanks to you all, I found a way: http://edorian.github.io/php-coding-standard-generator/#phpcs

Tried it before and it did not work and found out that I have to click on phpcs (looked selected in the first moment).

Drava answered 20/6, 2018 at 13:42 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.