Skip to content

Commit d9fae38

Browse files
Document the list of rules
Add `docs/rules.txt` with the output of `vendor/bin/phpcs -e --standard=src/ruleset.xml` which lists all of the rules included in the standard, and add a test to make sure that the file stays up to date.
1 parent bc1260b commit d9fae38

File tree

4 files changed

+237
-1
lines changed

4 files changed

+237
-1
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ This composer library implements a set of rules for [PHP Codesniffer](https://pa
77
It is based on the ruleset provided by the `mediawiki/mediawiki-codesniffer` package,
88
but with the MediaWiki-specific parts disabled and some other modifications.
99

10+
See [docs/rules.txt](docs/rules.txt) for the list of included sniffs.
11+
1012
## Usage
1113

1214
```xml

docs/rules.txt

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
2+
The DanielEScherzer standard contains 159 sniffs
3+
4+
CommonPhpcs (1 sniff)
5+
---------------------
6+
CommonPhpcs.Attributes.AttributeAlignment
7+
8+
Generic (41 sniffs)
9+
-------------------
10+
Generic.Arrays.DisallowLongArraySyntax
11+
Generic.Classes.DuplicateClassName
12+
Generic.CodeAnalysis.AssignmentInCondition
13+
Generic.CodeAnalysis.EmptyPHPStatement
14+
Generic.CodeAnalysis.ForLoopShouldBeWhileLoop
15+
Generic.CodeAnalysis.JumbledIncrementer
16+
Generic.CodeAnalysis.RequireExplicitBooleanOperatorPrecedence
17+
Generic.CodeAnalysis.UnconditionalIfStatement
18+
Generic.CodeAnalysis.UnnecessaryFinalModifier
19+
Generic.ControlStructures.DisallowYodaConditions
20+
Generic.ControlStructures.InlineControlStructure
21+
Generic.Files.ByteOrderMark
22+
Generic.Files.LineEndings
23+
Generic.Files.LineLength
24+
Generic.Files.OneObjectStructurePerFile
25+
Generic.Formatting.DisallowMultipleStatements
26+
Generic.Formatting.MultipleStatementAlignment
27+
Generic.Formatting.SpaceAfterCast
28+
Generic.Formatting.SpaceAfterNot
29+
Generic.Functions.CallTimePassByReference
30+
Generic.Functions.FunctionCallArgumentSpacing
31+
Generic.Functions.OpeningFunctionBraceKernighanRitchie
32+
Generic.NamingConventions.ConstructorName
33+
Generic.NamingConventions.UpperCaseConstantName
34+
Generic.PHP.BacktickOperator
35+
Generic.PHP.CharacterBeforePHPOpeningTag
36+
Generic.PHP.DeprecatedFunctions
37+
Generic.PHP.DisallowShortOpenTag
38+
Generic.PHP.DiscourageGoto
39+
Generic.PHP.ForbiddenFunctions
40+
Generic.PHP.LowerCaseConstant
41+
Generic.PHP.LowerCaseKeyword
42+
Generic.PHP.LowerCaseType
43+
Generic.PHP.NoSilencedErrors
44+
Generic.PHP.SAPIUsage
45+
Generic.VersionControl.GitMergeConflict
46+
Generic.WhiteSpace.DisallowSpaceIndent
47+
Generic.WhiteSpace.IncrementDecrementSpacing
48+
Generic.WhiteSpace.LanguageConstructSpacing
49+
Generic.WhiteSpace.ScopeIndent
50+
Generic.WhiteSpace.SpreadOperatorSpacingAfter
51+
52+
MediaWiki (58 sniffs)
53+
---------------------
54+
MediaWiki.AlternativeSyntax.LeadingZeroInFloat
55+
MediaWiki.AlternativeSyntax.UnicodeEscape
56+
MediaWiki.Arrays.AlphabeticArraySort
57+
MediaWiki.Arrays.TrailingComma
58+
MediaWiki.Classes.FullQualifiedClassName
59+
MediaWiki.Classes.UnsortedUseStatements
60+
MediaWiki.Classes.UnusedUseStatement
61+
MediaWiki.Commenting.ClassLevelLicense
62+
MediaWiki.Commenting.DocComment
63+
MediaWiki.Commenting.EmptyTag
64+
MediaWiki.Commenting.FunctionAnnotations
65+
MediaWiki.Commenting.FunctionComment
66+
MediaWiki.Commenting.IllegalSingleLineComment
67+
MediaWiki.Commenting.LicenseComment
68+
MediaWiki.Commenting.PhpunitAnnotations
69+
MediaWiki.Commenting.PropertyDocumentation
70+
MediaWiki.Commenting.RedundantVarName
71+
MediaWiki.Commenting.VariadicArgument
72+
MediaWiki.ControlStructures.MissingElseBetweenBrackets
73+
MediaWiki.ExtraCharacters.ParenthesesAroundKeyword
74+
MediaWiki.Files.ClassMatchesFilename
75+
MediaWiki.NamingConventions.LowerCamelFunctionsName
76+
MediaWiki.NamingConventions.PrefixedGlobalFunctions
77+
MediaWiki.NamingConventions.ValidGlobalName
78+
MediaWiki.PHPUnit.AssertCount
79+
MediaWiki.PHPUnit.AssertEmpty
80+
MediaWiki.PHPUnit.AssertEquals
81+
MediaWiki.PHPUnit.AssertionOrder
82+
MediaWiki.PHPUnit.DeprecatedPHPUnitMethods
83+
MediaWiki.PHPUnit.MockBoilerplate
84+
MediaWiki.PHPUnit.PHPUnitClassUsage
85+
MediaWiki.PHPUnit.PHPUnitTypeHints
86+
MediaWiki.PHPUnit.SetMethods
87+
MediaWiki.PHPUnit.SpecificAssertions
88+
MediaWiki.Usage.AssignmentInReturn
89+
MediaWiki.Usage.DirUsage
90+
MediaWiki.Usage.FinalPrivate
91+
MediaWiki.Usage.ForbiddenFunctions
92+
MediaWiki.Usage.InArrayUsage
93+
MediaWiki.Usage.IsNull
94+
MediaWiki.Usage.MagicConstantClosure
95+
MediaWiki.Usage.NestedFunctions
96+
MediaWiki.Usage.NestedInlineTernary
97+
MediaWiki.Usage.NullableType
98+
MediaWiki.Usage.PlusStringConcat
99+
MediaWiki.Usage.ReferenceThis
100+
MediaWiki.Usage.StaticClosure
101+
MediaWiki.VariableAnalysis.UnusedGlobalVariables
102+
MediaWiki.WhiteSpace.EmptyLinesBetweenUse
103+
MediaWiki.WhiteSpace.MultipleEmptyLines
104+
MediaWiki.WhiteSpace.OpeningKeywordParenthesis
105+
MediaWiki.WhiteSpace.SpaceAfterClosure
106+
MediaWiki.WhiteSpace.SpaceBeforeBracket
107+
MediaWiki.WhiteSpace.SpaceBeforeClassBrace
108+
MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment
109+
MediaWiki.WhiteSpace.SpaceyParenthesis
110+
MediaWiki.WhiteSpace.UnaryMinusSpacing
111+
MediaWiki.WhiteSpace.WhiteSpaceBeforeFunction
112+
113+
PEAR (1 sniff)
114+
--------------
115+
PEAR.Functions.ValidDefaultValue
116+
117+
PSR2 (9 sniffs)
118+
---------------
119+
PSR2.Classes.ClassDeclaration
120+
PSR2.Classes.PropertyDeclaration
121+
PSR2.ControlStructures.ElseIfDeclaration
122+
PSR2.ControlStructures.SwitchDeclaration
123+
PSR2.Files.EndFileNewline
124+
PSR2.Methods.FunctionClosingBrace
125+
PSR2.Methods.MethodDeclaration
126+
PSR2.Namespaces.NamespaceDeclaration
127+
PSR2.Namespaces.UseDeclaration
128+
129+
PSR12 (6 sniffs)
130+
----------------
131+
PSR12.Files.ImportStatement
132+
PSR12.Functions.NullableTypeDeclaration
133+
PSR12.Functions.ReturnTypeDeclaration
134+
PSR12.Keywords.ShortFormTypeKeywords
135+
PSR12.Properties.ConstantVisibility
136+
PSR12.Traits.UseDeclaration
137+
138+
SlevomatCodingStandard (9 sniffs)
139+
---------------------------------
140+
SlevomatCodingStandard.Arrays.DisallowImplicitArrayCreation
141+
SlevomatCodingStandard.Attributes.AttributesOrder
142+
SlevomatCodingStandard.Attributes.DisallowAttributesJoining
143+
SlevomatCodingStandard.Classes.BackedEnumTypeSpacing
144+
SlevomatCodingStandard.Classes.DisallowMultiConstantDefinition
145+
SlevomatCodingStandard.Exceptions.RequireNonCapturingCatch
146+
SlevomatCodingStandard.Functions.StrictCall
147+
SlevomatCodingStandard.Namespaces.DisallowGroupUse
148+
SlevomatCodingStandard.TypeHints.DeclareStrictTypes
149+
150+
Squiz (22 sniffs)
151+
-----------------
152+
Squiz.Classes.SelfMemberReference
153+
Squiz.Classes.ValidClassName
154+
Squiz.ControlStructures.ControlSignature
155+
Squiz.CSS.SemicolonSpacing
156+
Squiz.Functions.FunctionDeclarationArgumentSpacing
157+
Squiz.Functions.FunctionDuplicateArgument
158+
Squiz.Operators.ValidLogicalOperators
159+
Squiz.PHP.NonExecutableCode
160+
Squiz.Scope.MemberVarScope
161+
Squiz.Scope.MethodScope
162+
Squiz.Scope.StaticThisUsage
163+
Squiz.Strings.ConcatenationSpacing
164+
Squiz.WhiteSpace.CastSpacing
165+
Squiz.WhiteSpace.FunctionOpeningBraceSpace
166+
Squiz.WhiteSpace.FunctionSpacing
167+
Squiz.WhiteSpace.LogicalOperatorSpacing
168+
Squiz.WhiteSpace.ObjectOperatorSpacing
169+
Squiz.WhiteSpace.OperatorSpacing
170+
Squiz.WhiteSpace.ScopeClosingBrace
171+
Squiz.WhiteSpace.ScopeKeywordSpacing
172+
Squiz.WhiteSpace.SemicolonSpacing
173+
Squiz.WhiteSpace.SuperfluousWhitespace
174+
175+
Universal (11 sniffs)
176+
---------------------
177+
Universal.CodeAnalysis.NoDoubleNegative
178+
Universal.Constants.LowercaseClassResolutionKeyword
179+
Universal.Constants.UppercaseMagicConstants
180+
Universal.ControlStructures.DisallowAlternativeSyntax
181+
Universal.Lists.DisallowLongListSyntax
182+
Universal.Operators.TypeSeparatorSpacing
183+
Universal.PHP.LowercasePHPTag
184+
Universal.UseStatements.KeywordSpacing
185+
Universal.UseStatements.LowercaseFunctionConst
186+
Universal.UseStatements.NoUselessAliases
187+
Universal.WhiteSpace.CommaSpacing
188+
189+
Zend (1 sniff)
190+
--------------
191+
Zend.Files.ClosingTag

phpunit.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
>
1515
<testsuites>
1616
<testsuite name="phpcs">
17-
<file>./src/Tests/SniffOutputTest.php</file>
17+
<directory>./src/Tests</directory>
1818
</testsuite>
1919
</testsuites>
2020
</phpunit>

src/Tests/DocsListTest.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
declare( strict_types = 1 );
3+
4+
/**
5+
* Confirm that docs/rules.txt has the current list of sniffs.
6+
*/
7+
8+
namespace DanielEScherzer\CommonPhpcs\Tests;
9+
10+
use PHP_CodeSniffer\Config;
11+
use PHP_CodeSniffer\Ruleset;
12+
use PHPUnit\Framework\TestCase;
13+
14+
class DocsListTest extends TestCase {
15+
16+
public function testDocsList() {
17+
$rulesFile = dirname( __DIR__, 2 ) . '/docs/rules.txt';
18+
19+
$this->assertFileExists(
20+
$rulesFile,
21+
'docs/rules.txt should exist'
22+
);
23+
24+
$explainOutput = $this->getExplainOutput();
25+
26+
$docsFileContents = file_get_contents( $rulesFile );
27+
$this->assertSame( trim( $docsFileContents ), trim( $explainOutput ) );
28+
}
29+
30+
private function getExplainOutput(): string {
31+
$config = new Config( [
32+
"--standard=" . __DIR__ . '/..',
33+
] );
34+
$ruleset = new Ruleset( $config );
35+
36+
ob_start();
37+
$ruleset->explain();
38+
$output = ob_get_clean();
39+
40+
return $output;
41+
}
42+
43+
}

0 commit comments

Comments
 (0)