Skip to content
Snippets Groups Projects
Commit e935ead1 authored by Jörg Riemenschneider's avatar Jörg Riemenschneider Committed by Rajab Natshah
Browse files

Issue #3079231 by metalbote: Add code quality tests and analysis

parent 621c7330
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0"?>
<ruleset xmlns="http://pmd.sourceforge.net/ruleset/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="PMD Ruleset for Drupal" xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
<description>
A PMD Ruleset for Drupal coding standards.
</description>
<!--
Include each rule explicitly so we know what we have.
@see https://github.com/phpmd/phpmd/blob/master/src/main/resources/rulesets/
-->
<!-- Clean Code -->
<!--
These don't align with Drupal standards, so they are excluded.
@todo Static calls are hard to test and extend, is there a way to whitelist the ones that are OK?
<rule ref="rulesets/cleancode.xml/BooleanArgumentFlag"/>
<rule ref="rulesets/cleancode.xml/ElseExpression"/>
<rule ref="rulesets/cleancode.xml/StaticAccess"/>
-->
<!-- Code Size -->
<rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
<rule ref="rulesets/codesize.xml/NPathComplexity"/>
<rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>
<rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>
<rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
<rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>
<rule ref="rulesets/codesize.xml/TooManyFields"/>
<!-- Controversial -->
<rule ref="rulesets/controversial.xml/Superglobals"/>
<!--
These checks do not need to be included since PHPCS will check for style.
<rule ref="rulesets/controversial.xml/CamelCaseClassName"/>
<rule ref="rulesets/controversial.xml/CamelCasePropertyName"/>
<rule ref="rulesets/controversial.xml/CamelCaseMethodName"/>
<rule ref="rulesets/controversial.xml/CamelCaseParameterName"/>
<rule ref="rulesets/controversial.xml/CamelCaseVariableName"/>
-->
<!-- Design -->
<rule ref="rulesets/design.xml/ExitExpression"/>
<rule ref="rulesets/design.xml/EvalExpression"/>
<rule ref="rulesets/design.xml/GotoStatement"/>
<rule ref="rulesets/design.xml/NumberOfChildren"/>
<rule ref="rulesets/design.xml/DepthOfInheritance"/>
<rule ref="rulesets/design.xml/CouplingBetweenObjects"/>
<rule ref="rulesets/design.xml/DevelopmentCodeFragment"/>
<!-- Naming -->
<rule ref="rulesets/naming.xml/ShortVariable">
<properties>
<!-- Allow $id and $op as a variable name. -->
<property name="exceptions" description="Comma-separated list of exceptions" value="id,op"/>
</properties>
</rule>
<rule ref="rulesets/naming.xml/LongVariable">
<properties>
<!-- Bump variable length to a more reasonable number. -->
<property name="maximum" description="The variable length reporting threshold" value="35"/>
</properties>
</rule>
<rule ref="rulesets/naming.xml/ShortMethodName"/>
<rule ref="rulesets/naming.xml/ConstructorWithNameAsEnclosingClass"/>
<rule ref="rulesets/naming.xml/ConstantNamingConventions"/>
<rule ref="rulesets/naming.xml/BooleanGetMethodName"/>
<!-- Unused Code -->
<rule ref="rulesets/unusedcode.xml/UnusedPrivateField"/>
<!-- <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable"/> -->
<rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod"/>
<!--
Hooks often have unused parameters, so ignore this warning.
@todo is there a way to allow unused parameters in hooks but not elsewhere?
<rule ref="rulesets/unusedcode.xml/UnusedFormalParameter"/>
-->
</ruleset>
\ No newline at end of file
# ==============================================================================
# Default common config for Phpqa.
#
# For more options see:
# https://github.com/EdgedesignCZ/phpqa/blob/master/.phpqa.yml
# ==============================================================================
phpqa:
analyzedDirs: ./
buildDir: ./tests/code-quality
ignoredDirs: ".gitlab-ci,.git,.idea,bin,docroot,node_modules,private,.tests/assets,vendor,web"
ignoredFiles: ""
report: true
# verbose: true
# execution: no-parallel
tools:
- phpmetrics
- phploc
- phpcs
- phpmd
- pdepend
- phpcpd
- phpstan
- security-checker
extensions:
- php
- inc
- module
- install
- test
- profile
- theme
- info
- txt
- md
phpcs:
standard: Drupal
ignoreWarnings: true
# https://github.com/squizlabs/PHP_CodeSniffer/wiki/Reporting
reports:
cli:
- full
file:
checkstyle: checkstyle.xml
pdepend:
# coverageReport: build/coverage-clover.xml
phpmd:
standard: ./.phpmd.xml
phpstan:
level: 3
# https://github.com/phpstan/phpstan#configuration
standard: phpstan.neon
phpcpd:
minLines: 5
minTokens: 70
phpmetrics:
config: null
git: false
......@@ -4,6 +4,7 @@
<property name="drush" value="${project.basedir}/bin/drush" />
<property name="composer" value="/usr/local/bin/composer" />
<property name="npm" value="/usr/local/bin/npm" />
<property name="phpqa" value="${project.basedir}/bin/phpqa"/>
<property name="rsync" value="/usr/bin/rsync" />
<property name="db.type" value="mysql" />
<property name="db.host" value="localhost" />
......@@ -32,6 +33,7 @@
<echo message="Found Drush: ${drush}" />
<echo message="Found Composer: ${composer}" />
<echo message="Found phpqa: ${phpqa}" />
<echo message="Found NPM: ${npm}" />
<echo message="Found rsync: ${rsync}" />
</target>
......@@ -60,6 +62,14 @@
<filesync destinationDir="." rsyncPath="${rsync}" sourceDir="${profile}/" verbose="false" exclude="libraries,modules/contrib,behat.local.yml" />
</target>
<!-- Prepares the behat tests environment. -->
<target name="code-quality-check" depends="env">
<exec executable="${phpqa}" passthru="true">
<arg value="--analyzedDirs=./"/>
<arg value="--buildDir=./tests/code-quality"/>
</exec>
</target>
<!-- Prepares the docroot for installation via the UI. -->
<target name="preinstall" depends="uninstall">
<if>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment