11

I don't want to ignore the indent level.

I want to enforce a particular indent level that is not the default, 4.

Apparently this is possible:

enter image description here

How?

The documentation on this stuff seems to be eluding me.

Cheeso
  • 189,189
  • 101
  • 473
  • 713
  • 2
    +2 - Well made question and answer. And yeah, docs is not that well, so very welcome. – hakre Mar 10 '12 at 21:50

1 Answers1

6

Apparently one way to do it is this: create a new "Standard", create a new ruleset.xml, then insert into that ruleset.xml file, an XML stanza that sets the property.

For example, (I'm on Windows so my backslashes are all backslashes and not fwd slashes)

cd \dev\phpcs\CodeSniffer
mkdir NewStandard

Within that directory, create ruleset.xml, containing this :

<?xml version="1.0"?>
<ruleset name="Custom Standard">
  <description>My custom coding standard</description>
  <rule ref="PEAR">
    <exclude name="PEAR.Commenting.ClassComment"/>
    <exclude name="PEAR.Commenting.FileComment"/>
    <exclude name="PEAR.Commenting.FunctionComment"/>
    <exclude name="PEAR.Commenting.InlineComment"/>
    <exclude name="PEAR.Classes.ClassDeclaration"/>
    <exclude name="Generic.Files.LineEndings"/>
  </rule>

  <rule ref="PEAR.WhiteSpace.ScopeIndent">
    <properties>
      <property name="indent" value="2"/>
    </properties>
  </rule>

</ruleset>

The final stanza within the xml file sets the appropriate property.

To do this, you have to know that

A) the indenting sniff (rule) is PEAR.WhiteSpace.ScopeIndent

B) the property on that sniff is called indent.

Then, run phpcs as normal like so:

\php\php.exe phpcs\scripts\phpcs --standard=NewStandard --report=emacs MyCode.php

documentation:

http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php

Cheeso
  • 189,189
  • 101
  • 473
  • 713
  • comment on an old answer, I know.... But I found it helpful to also do the same for PEAR.WhiteSpace.ObjectOperatorIndent – Pete Dec 24 '22 at 01:08