Qual: Add phpcheckstyle
This commit is contained in:
parent
86de0f9458
commit
cb7c53e3f9
16
dev/phpcheckstyle/README
Normal file
16
dev/phpcheckstyle/README
Normal file
@ -0,0 +1,16 @@
|
||||
README (English)
|
||||
--------------------------------
|
||||
|
||||
This directory contains example of PHPCheckStyle configuration
|
||||
to use for quality assurance on PHP developpement.
|
||||
|
||||
To run PHPCheckstyle in eclipse, you must:
|
||||
- install plugin PHP Tools integration http://www.phpsrc.org/eclipse/pti/
|
||||
- Unzip PHPCheckStyle archive into a directory.
|
||||
- Go in Eclipse - Window - Preferences - Dynamic Languages - Validator
|
||||
Choose External PHP Script,
|
||||
Set path ro run.php file for localhost
|
||||
Choose a PHP version,
|
||||
Set parameter string with
|
||||
--src %f --config "phpstandard.cfg.xml" --format console
|
||||
Choose php as Filename extension
|
||||
302
dev/phpcheckstyle/phpstandard.cfg.xml
Normal file
302
dev/phpcheckstyle/phpstandard.cfg.xml
Normal file
@ -0,0 +1,302 @@
|
||||
<!-- somewhat inspired by java checkstyle -->
|
||||
<phpcheckstyle-configuration>
|
||||
|
||||
<!-- **************** -->
|
||||
<!-- Naming -->
|
||||
<!-- **************** -->
|
||||
|
||||
<!-- Check Constant Naming -->
|
||||
<test name="constantNaming" regexp="/^[A-Z_][A-Z_]*[A-Z_]$/" level="ERROR"/>
|
||||
|
||||
<!-- Check Variable Naming -->
|
||||
<test name="variableNaming" regexp="/^[a-z_][a-zA-Z0-9]*$/" />
|
||||
|
||||
<!-- Check Function Naming -->
|
||||
<test name="functionNaming" regexp="/^[a-z]/" level="ERROR"/>
|
||||
|
||||
<!-- Check Private Function Naming -->
|
||||
<test name="privateFunctionNaming" regexp="/^_[a-z]/" level="ERROR"/>
|
||||
|
||||
<!-- Checks the constuctor naming -->
|
||||
<!-- old = old style (constructor = name of the class) -->
|
||||
<!-- new = "__construct()" -->
|
||||
<test name="constructorNaming">
|
||||
<property name="naming" value="old"/>
|
||||
</test>
|
||||
|
||||
<!-- Check Class Naming -->
|
||||
<test name="classNaming" regexp="/^[A-Z]/" level="ERROR"/>
|
||||
|
||||
|
||||
<!-- **************** -->
|
||||
<!-- PHP Tags -->
|
||||
<!-- **************** -->
|
||||
|
||||
|
||||
<!-- Test if a short php code open tag is used (<? instead of <?php ). -->
|
||||
<test name="noShortPhpCodeTag"/>
|
||||
|
||||
<!-- Test if a PHP closing file is present at the end of a file -->
|
||||
<test name="noFileCloseTag"/>
|
||||
|
||||
<!-- Test if a file finish with some inner HTML (OK for some view but could provoque "header already sent" error) -->
|
||||
<test name="noFileFinishHTML" level="ERROR" />
|
||||
|
||||
|
||||
<!-- **************** -->
|
||||
<!-- Comments -->
|
||||
<!-- **************** -->
|
||||
|
||||
<!-- Check if some C style comments are used (#) -->
|
||||
<test name="noShellComments"/>
|
||||
|
||||
<!-- Tests that every function and class is immediately preceded by a docblock. A property "excludePrivateMembers" can be set if you want to disable docblocks for private member functions. -->
|
||||
<test name="docBlocks">
|
||||
<property name="excludePrivateMembers" value="true"/>
|
||||
<property name="testReturn" value="true"/>
|
||||
<property name="testParam" value="true"/>
|
||||
<property name="testThrow" value="true"/>
|
||||
</test>
|
||||
|
||||
<!-- **************** -->
|
||||
<!-- Indentation -->
|
||||
<!-- **************** -->
|
||||
|
||||
<!-- Tests to make sure that a line does not contain the tab character. -->
|
||||
<!-- <test name="noTabs"/> -->
|
||||
|
||||
<!-- Test to make sure that every control structure is included within a {} block, even if it is syntactically optional. -->
|
||||
<test name="controlStructNeedCurly"/>
|
||||
|
||||
<!-- Check the position of the open curly brace in a control structure (if) -->
|
||||
<!-- sl = same line -->
|
||||
<!-- nl = new line -->
|
||||
<test name="controlStructOpenCurly">
|
||||
<property name="position" value="sl"/>
|
||||
</test>
|
||||
|
||||
<!-- Check the position of the close curly brace -->
|
||||
<test name="controlCloseCurly" level="INFO">
|
||||
</test>
|
||||
|
||||
<!-- Check the position of the open curly brace after a function -->
|
||||
<!-- sl = same line -->
|
||||
<!-- nl = new line -->
|
||||
<!--
|
||||
<test name="funcDefinitionOpenCurly">
|
||||
<property name="position" value="sl"/>
|
||||
</test>
|
||||
-->
|
||||
|
||||
<!-- Check the position of the else -->
|
||||
<!-- sl = same line -->
|
||||
<!-- nl = new line -->
|
||||
<test name="controlStructElse">
|
||||
<property name="position" value="nl"/>
|
||||
</test>
|
||||
|
||||
|
||||
<!-- **************** -->
|
||||
<!-- Spaces -->
|
||||
<!-- **************** -->
|
||||
|
||||
<!-- Tests that the control statements ("if", "else", "while", "for", etc.)
|
||||
are followed by a space before the opening parenthesis.
|
||||
PEAR standard stipulates this to distinguish it from function calls.
|
||||
-->
|
||||
<test name="spaceAfterControlStmt"/>
|
||||
|
||||
<!-- Check that there is no space after a function name in a function call -->
|
||||
<!-- <test name="noSpaceAfterFunctionName" level="INFO"></test> -->
|
||||
|
||||
|
||||
<!-- Check for the (required) presence of a white space after some tokens (like ,) -->
|
||||
<test name="checkWhiteSpaceAfter">
|
||||
<exception value="."/> <!-- Exceptions to this rule -->
|
||||
</test>
|
||||
|
||||
<!-- Check for the (required) presence of a white space before some tokens -->
|
||||
<test name="checkWhiteSpaceBefore">
|
||||
<exception value="."/> <!-- Exceptions to this rule -->
|
||||
<exception value=":"/> <!-- Because of the switch/case -->
|
||||
</test>
|
||||
|
||||
|
||||
<!-- Check that there is no space before before some tokens -->
|
||||
<test name="noSpaceBeforeToken" level="INFO">
|
||||
</test>
|
||||
|
||||
<!-- Check that there is no space after some tokens -->
|
||||
<test name="noSpaceAfterToken" level="INFO">
|
||||
</test>
|
||||
|
||||
<!-- **************** -->
|
||||
<!-- Metrics -->
|
||||
<!-- **************** -->
|
||||
|
||||
<!-- Check that the lenght of the line doesn't pass the max value -->
|
||||
<test name="lineLength" level="INFO">
|
||||
<property name="maxLineLength" value="160"/>
|
||||
</test>
|
||||
|
||||
<!-- Checks that the lenght (in lines) of a function doesn't pass the max value -->
|
||||
<test name="functionLength" level="INFO">
|
||||
<property name="maxLength" value="500"/>
|
||||
</test>
|
||||
|
||||
<!-- Checks for excessive parameters in a function declaration -->
|
||||
<!-- <test name="functionMaxParameters">
|
||||
<property name="maxParameters" value="4"/>
|
||||
</test> -->
|
||||
|
||||
<!-- Check Cyclomatic Complexity -->
|
||||
<!-- see http://www.aivosto.com/project/help/pm-complexity.html -->
|
||||
<test name="cyclomaticComplexity">
|
||||
<!-- Level raising a warning -->
|
||||
<property name="warningLevel" value="10"/>
|
||||
<!-- Level raising an error -->
|
||||
<property name="errorLevel" value="20"/>
|
||||
</test>
|
||||
|
||||
<!-- **************** -->
|
||||
<!-- Other -->
|
||||
<!-- **************** -->
|
||||
|
||||
<!-- All arguments with default values should be at the end -->
|
||||
<test name="defaultValuesOrder"/>
|
||||
|
||||
<!-- Check for prohibited functions -->
|
||||
<!-- @see http://www.php.net/manual/en/indexes.php -->
|
||||
<test name="checkProhibitedFunctions">
|
||||
<item value="echo"/>
|
||||
<item value="system"/>
|
||||
<item value="print_r"/>
|
||||
<item value="var_dump"/>
|
||||
<item value="dl"/>
|
||||
<item value="exec"/>
|
||||
<item value="passthru"/>
|
||||
<item value="delete"/>
|
||||
<item value="ereg_replace"/>
|
||||
<item value="ereg"/>
|
||||
<item value="eregi"/>
|
||||
<!-- <item value="copy"/> -->
|
||||
<!-- <item value="fwrite"/> -->
|
||||
</test>
|
||||
|
||||
<!-- Check for prohibited tokens -->
|
||||
<!-- @see http://www.php.net/manual/en/tokens.php -->
|
||||
<test name="checkProhibitedTokens">
|
||||
<item value="T_BAD_CHARACTER"/>
|
||||
<item value="T_DECLARE"/>
|
||||
<item value="T_ENDDECLARE"/>
|
||||
<item value="T_ENDFOR"/>
|
||||
<item value="T_ENDFOREACH"/>
|
||||
<item value="T_ENDIF"/>
|
||||
<item value="T_ENDSWITCH"/>
|
||||
<item value="T_ENDWHILE"/>
|
||||
<item value="T_HALT_COMPILER"/>
|
||||
<item value="T_OLD_FUNCTION"/>
|
||||
<item value="T_PRINT"/>
|
||||
|
||||
<!-- Same thing as the noShortPhpCodeTag rule -->
|
||||
<!-- <item value="T_OPEN_TAG_WITH_ECHO"/> -->
|
||||
|
||||
<!-- <item value="T_INLINE_HTML"/> -->
|
||||
<!-- <item value="T_ECHO"/> -->
|
||||
|
||||
|
||||
</test>
|
||||
|
||||
<!-- Check for silenced errors before function calls (@function) -->
|
||||
<test name="checkSilencedError">
|
||||
<exception value="rename"/> <!-- Exceptions to this rule -->
|
||||
<exception value="mkdir"/>
|
||||
<exception value="chmod"/>
|
||||
</test>
|
||||
|
||||
<!-- Check for encapsed variables inside a String ("$a") -->
|
||||
<test name="encapsedVariablesInsideString">
|
||||
</test>
|
||||
|
||||
<!-- Avoid passing parameters by reference -->
|
||||
<test name="avoidPassingReferences">
|
||||
</test>
|
||||
|
||||
<test name="showTODOs">
|
||||
</test>
|
||||
|
||||
<!-- Use boolean operators (&&) instead of logical operators (AND) -->
|
||||
<test name="useBooleanOperators">
|
||||
</test>
|
||||
|
||||
<!-- Check empty block like if ($a) {} -->
|
||||
<test name="checkEmptyBlock">
|
||||
<!-- <exception value="catch"/> -->
|
||||
</test>
|
||||
|
||||
<!-- Check empty statement ( ;; ) -->
|
||||
<test name="checkEmptyStatement">
|
||||
</test>
|
||||
|
||||
<!-- Check for the presence of heredoc -->
|
||||
<test name="checkHeredoc">
|
||||
</test>
|
||||
|
||||
<!-- Check for braces around code blocs (if, else, elseif, do, while, for, foreach) -->
|
||||
<test name="needBraces">
|
||||
</test>
|
||||
|
||||
<!-- Switch need a default value -->
|
||||
<test name="switchNeedDefault">
|
||||
</test>
|
||||
|
||||
<!-- Switch case should have a break -->
|
||||
<!-- <test name="switchCaseNeedBreak">
|
||||
</test> -->
|
||||
|
||||
<!-- Switch default value should be at the end -->
|
||||
<test name="switchDefaultOrder">
|
||||
</test>
|
||||
|
||||
|
||||
<!--
|
||||
Avoid using unary operators (++) inside a control statement
|
||||
With the exception of for iterators, all variable incrementation or decrementation should occur in their own toplevel statement to increase readability.
|
||||
-->
|
||||
<test name="checkUnaryOperator">
|
||||
<exception value="for"/>
|
||||
</test>
|
||||
|
||||
<!--
|
||||
With inner assignments it is difficult to see all places where a variable is set.
|
||||
With the exception of for iterators, all assignments should occur in their own toplevel statement to increase readability.
|
||||
-->
|
||||
<test name="checkInnerAssignment">
|
||||
<exception value="for"/>
|
||||
</test>
|
||||
|
||||
<!-- Detect unused private functions (detecting unused public ones is more difficult) -->
|
||||
<test name="checkUnusedPrivateFunctions">
|
||||
</test>
|
||||
|
||||
<!-- Detect unused variables -->
|
||||
<test name="checkUnusedVariables">
|
||||
</test>
|
||||
|
||||
<!-- Detect unused function parameters -->
|
||||
<test name="checkUnusedFunctionParameters">
|
||||
</test>
|
||||
|
||||
<!-- Only one class declaration per PHP file -->
|
||||
<test name="oneClassPerFile">
|
||||
</test>
|
||||
|
||||
<!-- ******************* -->
|
||||
<!-- Optimisation -->
|
||||
<!-- ******************* -->
|
||||
|
||||
<!-- Only one class declaration per PHP file -->
|
||||
<test name="functionInsideLoop">
|
||||
</test>
|
||||
|
||||
</phpcheckstyle-configuration>
|
||||
Loading…
Reference in New Issue
Block a user