:octocat: +phpmd & phpcs

This commit is contained in:
smiley
2023-03-11 22:57:15 +01:00
parent 4e89c0312e
commit 1e0a5dbc5c
6 changed files with 267 additions and 5 deletions
+17 -1
View File
@@ -1,5 +1,21 @@
.build/*
# IDE - IntelliJ
.idea/*
# Keep the code styles.
!.idea/codeStyles
.idea/codeStyles/*
!.idea/codeStyles/Project.xml
!.idea/codeStyles/codeStyleConfig.xml
# Keep the inspection levels
!.idea/inspectionProfiles
.idea/inspectionProfiles/*
!.idea/inspectionProfiles/Project_Default.xml
# project stuff
.build/*
docs/*
vendor/*
composer.lock
phpcs.xml
phpdoc.xml
phpmd.xml
phpunit.xml
+7 -4
View File
@@ -1,6 +1,6 @@
{
"name": "chillerlan/php-qrcode",
"description": "A QR code generator. PHP 7.4+",
"description": "A QR code generator with a user friendly API. PHP 7.4+",
"homepage": "https://github.com/chillerlan/php-qrcode",
"license": "MIT",
"minimum-stability": "stable",
@@ -29,13 +29,16 @@
"chillerlan/php-settings-container": "^2.1.4"
},
"require-dev": {
"phpunit/phpunit": "^9.6",
"phan/phan": "^5.4",
"setasign/fpdf": "^1.8.2"
"phpmd/phpmd": "^2.13",
"phpunit/phpunit": "^9.6",
"setasign/fpdf": "^1.8.2",
"squizlabs/php_codesniffer": "^3.7"
},
"suggest": {
"chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.",
"setasign/fpdf": "Required to use the QR FPDF output."
"setasign/fpdf": "Required to use the QR FPDF output.",
"simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code"
},
"autoload": {
"psr-4": {
+188
View File
@@ -0,0 +1,188 @@
<?xml version="1.0"?>
<ruleset name="php-qrcode-cs"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd">
<description>php-qrcode rules for phpcs</description>
<file>examples</file>
<file>src</file>
<file>tests</file>
<arg name="basepath" value="."/>
<arg name="tab-width" value="4"/>
<rule ref="Internal.Tokenizer.Exception">
<type>error</type>
</rule>
<rule ref="Generic">
<exclude name="Generic.Arrays.DisallowShortArraySyntax" />
<exclude name="Generic.CodeAnalysis.EmptyStatement" />
<exclude name="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" />
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter" />
<exclude name="Generic.Commenting.Todo" />
<exclude name="Generic.ControlStructures.InlineControlStructure" />
<exclude name="Generic.Debug" />
<exclude name="Generic.Files.EndFileNoNewline" />
<exclude name="Generic.Files.LowercasedFilename" />
<exclude name="Generic.Formatting.SpaceBeforeCast" />
<exclude name="Generic.Functions.OpeningFunctionBraceBsdAllman" />
<exclude name="Generic.NamingConventions.AbstractClassNamePrefix" />
<exclude name="Generic.NamingConventions.CamelCapsFunctionName" />
<exclude name="Generic.PHP.ClosingPHPTag" />
<exclude name="Generic.PHP.RequireStrictTypes" />
<exclude name="Generic.PHP.UpperCaseConstant" />
<exclude name="Generic.VersionControl" />
<exclude name="Generic.WhiteSpace.DisallowTabIndent" />
<exclude name="Generic." />
</rule>
<rule ref="Generic.ControlStructures.InlineControlStructure">
<properties>
<property name="error" value="true"/>
</properties>
</rule>
<rule ref="Generic.Files.LineLength">
<properties>
<property name="lineLimit" value="130" />
<property name="absoluteLineLimit" value="160" />
<property name="ignoreComments" value="true" />
</properties>
</rule>
<rule ref="Generic.PHP.ForbiddenFunctions">
<properties>
<property name="forbiddenFunctions" type="array">
<element key="die" value="exit"/>
<element key="sizeof" value="count"/>
<element key="delete" value="unset"/>
<element key="print" value="echo"/>
<element key="is_null" value="null"/>
<element key="create_function" value="null"/>
</property>
</properties>
</rule>
<rule ref="Generic.Formatting.SpaceAfterCast">
<properties>
<property name="spacing" value="0" />
</properties>
</rule>
<rule ref="Generic.Formatting.SpaceAfterNot">
<properties>
<property name="spacing" value="0" />
</properties>
</rule>
<rule ref="Generic.WhiteSpace.ScopeIndent">
<properties>
<property name="tabIndent" value="true" />
</properties>
</rule>
<rule ref="PEAR">
<exclude name="PEAR.Classes" />
<exclude name="PEAR.Commenting" />
<exclude name="PEAR.ControlStructures" />
<exclude name="PEAR.Functions.FunctionCallSignature" />
<exclude name="PEAR.Functions.FunctionDeclaration" />
<exclude name="PEAR.NamingConventions" />
<exclude name="PEAR.WhiteSpace.ScopeIndent" />
</rule>
<rule ref="PEAR.Commenting.FunctionComment">
<properties>
<property name="minimumVisibility" value="public" />
</properties>
</rule>
<rule ref="PSR2">
<exclude name="PSR1.Methods.CamelCapsMethodName.NotCamelCaps" />
<exclude name="PSR2.Classes.ClassDeclaration" />
<exclude name="PSR2.ControlStructures.ControlStructureSpacing" />
<exclude name="PSR2.ControlStructures.SwitchDeclaration" />
<exclude name="PSR2.Methods.FunctionClosingBrace" />
<exclude name="PSR2.Namespaces.UseDeclaration.MultipleDeclarations" />
</rule>
<rule ref="PSR2.Methods.MethodDeclaration.Underscore">
<type>error</type>
</rule>
<rule ref="PSR2.Classes.PropertyDeclaration.Underscore">
<type>error</type>
</rule>
<rule ref="PSR12">
<exclude name="PSR12.Classes.ClassInstantiation" />
<exclude name="PSR12.Classes.OpeningBraceSpace" />
<exclude name="PSR12.ControlStructures" />
<exclude name="PSR12.Files.FileHeader.SpacingInsideBlock" />
<exclude name="PSR12.Files.FileHeader.SpacingAfterBlock" />
<exclude name="PSR12.Functions.ReturnTypeDeclaration" />
<exclude name="PSR12.Operators.OperatorSpacing" />
</rule>
<rule ref="PSR12.Namespaces.CompoundNamespaceDepth">
<properties>
<property name="maxDepth" value="1" />
</properties>
</rule>
<rule ref="Squiz">
<exclude name="Squiz.Arrays.ArrayDeclaration.IndexNoNewline" />
<exclude name="Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed" />
<exclude name="Squiz.Arrays.ArrayDeclaration.ValueNoNewline" />
<exclude name="Squiz.Classes.ClassDeclaration" />
<exclude name="Squiz.Commenting" />
<exclude name="Squiz.ControlStructures.ControlSignature" />
<exclude name="Squiz.ControlStructures.ElseIfDeclaration" />
<exclude name="Squiz.ControlStructures.InlineIfDeclaration.NotSingleLine" />
<exclude name="Squiz.ControlStructures.SwitchDeclaration" />
<exclude name="Squiz.Files" />
<exclude name="Squiz.Functions" />
<exclude name="Squiz.NamingConventions.ValidVariableName.NotCamelCaps" />
<exclude name="Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps" />
<exclude name="Squiz.NamingConventions.ValidFunctionName.ScopeNotCamelCaps" />
<exclude name="Squiz.Objects.ObjectInstantiation.NotAssigned" />
<exclude name="Squiz.Operators.ComparisonOperatorUsage" />
<exclude name="Squiz.PHP.CommentedOutCode" />
<exclude name="Squiz.PHP.DisallowBooleanStatement" />
<exclude name="Squiz.PHP.DisallowComparisonAssignment" />
<exclude name="Squiz.PHP.DisallowInlineIf" />
<exclude name="Squiz.PHP.EmbeddedPhp" />
<exclude name="Squiz.Strings.ConcatenationSpacing" />
<exclude name="Squiz.WhiteSpace" />
</rule>
<rule ref="Squiz.Commenting.EmptyCatchComment" />
<!-- exclude some checks for the examples-->
<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
<exclude-pattern>examples</exclude-pattern>
</rule>
<rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
<exclude-pattern>examples</exclude-pattern>
</rule>
<rule ref="PSR1.Files.SideEffects.FoundWithSymbols">
<exclude-pattern>examples</exclude-pattern>
</rule>
<rule ref="Squiz.Classes.ClassFileName.NoMatch">
<exclude-pattern>examples</exclude-pattern>
</rule>
<rule ref="Squiz.PHP.DiscouragedFunctions.Discouraged">
<exclude-pattern>examples</exclude-pattern>
</rule>
</ruleset>
View File
+55
View File
@@ -0,0 +1,55 @@
<?xml version="1.0"?>
<!-- https://github.com/phpmd/phpmd_-->
<ruleset name="My first PHPMD rule set"
xmlns="http://pmd.sf.net/ruleset/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
<description>codemasher/php-qrcode PMD ruleset</description>
<exclude-pattern>*/examples/*</exclude-pattern>
<exclude-pattern>*/vendor/*</exclude-pattern>
<exclude-pattern>*/tests/*</exclude-pattern>
<rule ref="rulesets/cleancode.xml">
<exclude name="ElseExpression"/>
<exclude name="StaticAccess"/>
</rule>
<rule ref="rulesets/codesize.xml" />
<rule ref="rulesets/codesize.xml/CyclomaticComplexity">
<priority>1</priority>
<properties>
<property name="reportLevel" value="50"/>
</properties>
</rule>
<rule ref="rulesets/codesize.xml/NPathComplexity">
<priority>1</priority>
<properties>
<property name="minimum" value="1000"/>
</properties>
</rule>
<rule ref="rulesets/codesize.xml/ExcessiveClassComplexity">
<priority>1</priority>
<properties>
<property name="maximum" value="150"/>
</properties>
</rule>
<rule ref="rulesets/controversial.xml">
<!-- superglobals are only used in examples -->
<exclude name="Superglobals"/>
<exclude name="CamelCaseMethodName"/>
<exclude name="CamelCaseParameterName"/>
<exclude name="CamelCasePropertyName"/>
<exclude name="CamelCaseVariableName"/>
</rule>
<rule ref="rulesets/design.xml">
<!-- exits are only used in examples -->
<exclude name="ExitExpression"/>
</rule>
<rule ref="rulesets/naming.xml">
<exclude name="LongVariable"/>
<exclude name="ShortVariable"/>
<exclude name="ConstantNamingConventions"/>
</rule>
<rule ref="rulesets/unusedcode.xml">
<exclude name="UnusedFormalParameter"/>
</rule>
</ruleset>
View File