mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-06 17:48:25 +01:00
314 lines
10 KiB
XML
314 lines
10 KiB
XML
<!-- somewhat inspired by java checkstyle -->
|
|
<phpcheckstyle-configuration>
|
|
|
|
<!-- **************** -->
|
|
<!-- Naming -->
|
|
<!-- **************** -->
|
|
|
|
<!-- Check Constant Naming -->
|
|
<!-- Disabled to avoid warning with $sql="SELECT ..."
|
|
<test name="constantNaming" regexp="/^[A-Z_][A-Z_]*[A-Z_]$/" level="ERROR"/>
|
|
-->
|
|
|
|
<!-- Check Variable Naming -->
|
|
<test name="variableNaming" regexp="/^[a-zA-Z_][a-zA-Z0-9_]*$/" />
|
|
|
|
<!-- Check Function Naming -->
|
|
<test name="functionNaming" regexp="/^[a-z_]/" level="WARNING"/>
|
|
|
|
<!-- 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="WARNING"/>
|
|
|
|
|
|
<!-- **************** -->
|
|
<!-- 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="nl"/>
|
|
</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="nl"/>
|
|
</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="."/>
|
|
</test>
|
|
-->
|
|
|
|
<!-- Check for the (required) presence of a white space before some tokens -->
|
|
<!--
|
|
<test name="checkWhiteSpaceBefore">
|
|
<exception value="."/>
|
|
<exception value=":"/>
|
|
</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"/> We disable because of false report when using method 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> |