Kaynağa Gözat

:octocat: +phpmd & phpcs

smiley 2 yıl önce
ebeveyn
işleme
1e0a5dbc5c
6 değiştirilmiş dosya ile 267 ekleme ve 5 silme
  1. 17 1
      .gitignore
  2. 7 4
      composer.json
  3. 188 0
      phpcs.xml.dist
  4. 0 0
      phpdoc.xml.dist
  5. 55 0
      phpmd.xml.dist
  6. 0 0
      phpunit.xml.dist

+ 17 - 1
.gitignore

@@ -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
composer.json

@@ -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 - 0
phpcs.xml.dist

@@ -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>

+ 0 - 0
phpdoc.xml → phpdoc.xml.dist


+ 55 - 0
phpmd.xml.dist

@@ -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>

+ 0 - 0
phpunit.xml → phpunit.xml.dist