Skip to content

Commit 0d65a5f

Browse files
committed
:octocat: CI update
1 parent 4b1a0a2 commit 0d65a5f

File tree

9 files changed

+282
-44
lines changed

9 files changed

+282
-44
lines changed

.github/workflows/ci.yml

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ jobs:
1818

1919
runs-on: ubuntu-latest
2020

21+
strategy:
22+
fail-fast: true
23+
matrix:
24+
php-version:
25+
- "8.1"
26+
- "8.2"
27+
- "8.3"
28+
2129
env:
2230
PHAN_ALLOW_XDEBUG: 0
2331
PHAN_DISABLE_XDEBUG_WARN: 1
@@ -29,7 +37,7 @@ jobs:
2937
- name: "Install PHP"
3038
uses: shivammathur/setup-php@v2
3139
with:
32-
php-version: "8.1"
40+
php-version: ${{ matrix.php-version }}
3341
tools: pecl
3442
coverage: none
3543
extensions: ast, curl, json, simplexml, zlib
@@ -38,7 +46,8 @@ jobs:
3846
uses: ramsey/composer-install@v2
3947

4048
- name: "Run phan"
41-
run: php vendor/bin/phan
49+
run: php vendor/bin/phan --target-php-version=${{ matrix.php-version }}
50+
4251

4352
build-docs:
4453
name: "Build and publish Docs"
@@ -58,7 +67,7 @@ jobs:
5867
extensions: gd, imagick, json, mbstring
5968

6069
- name: "Build Docs"
61-
run: phpdoc --config=phpdoc.xml
70+
run: phpdoc --config=phpdoc.xml.dist
6271

6372
- name: "Publish Docs to gh-pages"
6473
uses: JamesIves/github-pages-deploy-action@v4
@@ -67,9 +76,10 @@ jobs:
6776
FOLDER: docs
6877
CLEAN: true
6978

79+
7080
tests:
7181
name: "Unit Tests"
72-
82+
needs: static-code-analysis
7383
runs-on: ${{ matrix.os }}
7484

7585
strategy:
@@ -81,6 +91,7 @@ jobs:
8191
php-version:
8292
- "8.1"
8393
- "8.2"
94+
- "8.3"
8495

8596
steps:
8697
- name: "Checkout"
@@ -104,3 +115,9 @@ jobs:
104115

105116
- name: "Send code coverage report to Codecov.io"
106117
uses: codecov/codecov-action@v3
118+
119+
- name: "Send code coverage report to Codacy"
120+
uses: codacy/codacy-coverage-reporter-action@v1
121+
with:
122+
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
123+
coverage-reports: .build/coverage/clover.xml

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@
44
vendor/*
55
composer.lock
66
*cacert.pem
7+
phpcs.xml
8+
phpdoc.xml
9+
phpmd.xml
710
phpunit.xml

.phan/config.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
// Note that the **only** effect of choosing `'5.6'` is to infer
1515
// that functions removed in php 7.0 exist.
1616
// (See `backward_compatibility_checks` for additional options)
17-
'target_php_version' => '8.1',
17+
'target_php_version' => null,
18+
'minimum_target_php_version' => '8.1',
1819

1920
// A list of directories that should be parsed for class and
2021
// method information. After excluding the directories
@@ -23,7 +24,7 @@
2324
//
2425
// Thus, both first-party and third-party code being used by
2526
// your application should be included in this list.
26-
'directory_list' => [
27+
'directory_list' => [
2728
'src',
2829
'tests',
2930
'vendor',
@@ -33,7 +34,7 @@
3334
// exclude from parsing. Actual value will exclude every
3435
// "test", "tests", "Test" and "Tests" folders found in
3536
// "vendor/" directory.
36-
'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@',
37+
'exclude_file_regex' => '@^vendor/.*/(tests?|Tests?)/@',
3738

3839
// A directory list that defines files that will be excluded
3940
// from static analysis, but whose class and method

.scrutinizer.yml

Lines changed: 0 additions & 16 deletions
This file was deleted.

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
"require-dev": {
3131
"guzzlehttp/psr7": "^2.5",
3232
"phan/phan": "^5.4",
33-
"phpunit/phpunit": "^10.2"
33+
"phpmd/phpmd": "^2.13",
34+
"phpunit/phpunit": "^10.2",
35+
"squizlabs/php_codesniffer": "^3.7"
3436
},
3537
"autoload": {
3638
"psr-4": {

phpcs.xml.dist

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
<?xml version="1.0"?>
2+
<ruleset name="php-http-message-utils-cs"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd">
5+
<description>php-http-message-utils rules for phpcs</description>
6+
7+
<file>examples</file>
8+
<file>src</file>
9+
<file>tests</file>
10+
11+
<arg name="basepath" value="."/>
12+
<arg name="tab-width" value="4"/>
13+
14+
<rule ref="Internal.Tokenizer.Exception">
15+
<type>error</type>
16+
</rule>
17+
18+
19+
<rule ref="Generic">
20+
<exclude name="Generic.Arrays.DisallowShortArraySyntax" />
21+
<exclude name="Generic.CodeAnalysis.EmptyStatement" />
22+
<exclude name="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" />
23+
<exclude name="Generic.CodeAnalysis.UnusedFunctionParameter" />
24+
<exclude name="Generic.Commenting.Todo" />
25+
<exclude name="Generic.ControlStructures.InlineControlStructure" />
26+
<exclude name="Generic.Debug" />
27+
<exclude name="Generic.Files.EndFileNoNewline" />
28+
<exclude name="Generic.Files.LowercasedFilename" />
29+
<exclude name="Generic.Formatting.SpaceBeforeCast" />
30+
<exclude name="Generic.Functions.OpeningFunctionBraceBsdAllman" />
31+
<exclude name="Generic.NamingConventions.AbstractClassNamePrefix" />
32+
<exclude name="Generic.NamingConventions.CamelCapsFunctionName" />
33+
<exclude name="Generic.PHP.ClosingPHPTag" />
34+
<exclude name="Generic.PHP.RequireStrictTypes" />
35+
<exclude name="Generic.PHP.UpperCaseConstant" />
36+
<exclude name="Generic.VersionControl" />
37+
<exclude name="Generic.WhiteSpace.DisallowTabIndent" />
38+
<exclude name="Generic." />
39+
</rule>
40+
41+
<rule ref="Generic.ControlStructures.InlineControlStructure">
42+
<properties>
43+
<property name="error" value="true"/>
44+
</properties>
45+
</rule>
46+
47+
<rule ref="Generic.Files.LineLength">
48+
<properties>
49+
<property name="lineLimit" value="130" />
50+
<property name="absoluteLineLimit" value="160" />
51+
<property name="ignoreComments" value="true" />
52+
</properties>
53+
</rule>
54+
55+
<rule ref="Generic.PHP.ForbiddenFunctions">
56+
<properties>
57+
<property name="forbiddenFunctions" type="array">
58+
<element key="die" value="exit"/>
59+
<element key="sizeof" value="count"/>
60+
<element key="delete" value="unset"/>
61+
<element key="print" value="echo"/>
62+
<element key="is_null" value="null"/>
63+
<element key="create_function" value="null"/>
64+
</property>
65+
</properties>
66+
</rule>
67+
68+
<rule ref="Generic.Formatting.SpaceAfterCast">
69+
<properties>
70+
<property name="spacing" value="0" />
71+
</properties>
72+
</rule>
73+
74+
<rule ref="Generic.Formatting.SpaceAfterNot">
75+
<properties>
76+
<property name="spacing" value="0" />
77+
</properties>
78+
</rule>
79+
80+
<rule ref="Generic.WhiteSpace.ScopeIndent">
81+
<properties>
82+
<property name="tabIndent" value="true" />
83+
</properties>
84+
</rule>
85+
86+
87+
<rule ref="PEAR">
88+
<exclude name="PEAR.Classes" />
89+
<exclude name="PEAR.Commenting" />
90+
<exclude name="PEAR.ControlStructures" />
91+
<exclude name="PEAR.Functions.FunctionCallSignature" />
92+
<exclude name="PEAR.Functions.FunctionDeclaration" />
93+
<exclude name="PEAR.NamingConventions" />
94+
<exclude name="PEAR.WhiteSpace.ScopeIndent" />
95+
</rule>
96+
97+
<rule ref="PEAR.Commenting.FunctionComment">
98+
<properties>
99+
<property name="minimumVisibility" value="public" />
100+
</properties>
101+
</rule>
102+
103+
104+
<rule ref="PSR2">
105+
<exclude name="PSR1.Methods.CamelCapsMethodName.NotCamelCaps" />
106+
107+
<exclude name="PSR2.Classes.ClassDeclaration" />
108+
<exclude name="PSR2.ControlStructures.ControlStructureSpacing" />
109+
<exclude name="PSR2.ControlStructures.SwitchDeclaration" />
110+
<exclude name="PSR2.Methods.FunctionClosingBrace" />
111+
<exclude name="PSR2.Namespaces.UseDeclaration.MultipleDeclarations" />
112+
</rule>
113+
114+
<rule ref="PSR2.Methods.MethodDeclaration.Underscore">
115+
<type>error</type>
116+
</rule>
117+
118+
<rule ref="PSR2.Classes.PropertyDeclaration.Underscore">
119+
<type>error</type>
120+
</rule>
121+
122+
123+
<rule ref="PSR12">
124+
<exclude name="PSR12.Classes.ClassInstantiation" />
125+
<exclude name="PSR12.Classes.OpeningBraceSpace" />
126+
<exclude name="PSR12.ControlStructures" />
127+
<exclude name="PSR12.Files.FileHeader.SpacingInsideBlock" />
128+
<exclude name="PSR12.Files.FileHeader.SpacingAfterBlock" />
129+
<exclude name="PSR12.Functions.ReturnTypeDeclaration" />
130+
<exclude name="PSR12.Operators.OperatorSpacing" />
131+
<exclude name="PSR12.Traits.UseDeclaration.MultipleImport" />
132+
</rule>
133+
134+
<rule ref="PSR12.Namespaces.CompoundNamespaceDepth">
135+
<properties>
136+
<property name="maxDepth" value="1" />
137+
</properties>
138+
</rule>
139+
140+
<rule ref="Squiz">
141+
<exclude name="Squiz.Arrays.ArrayDeclaration.IndexNoNewline" />
142+
<exclude name="Squiz.Arrays.ArrayDeclaration.MultiLineNotAllowed" />
143+
<exclude name="Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed" />
144+
<exclude name="Squiz.Arrays.ArrayDeclaration.ValueNoNewline" />
145+
<exclude name="Squiz.Classes.ClassDeclaration" />
146+
<exclude name="Squiz.Commenting" />
147+
<exclude name="Squiz.ControlStructures.ControlSignature" />
148+
<exclude name="Squiz.ControlStructures.ElseIfDeclaration" />
149+
<exclude name="Squiz.ControlStructures.InlineIfDeclaration.NotSingleLine" />
150+
<exclude name="Squiz.ControlStructures.SwitchDeclaration" />
151+
<exclude name="Squiz.Files" />
152+
<exclude name="Squiz.Functions" />
153+
<exclude name="Squiz.NamingConventions.ValidVariableName.NotCamelCaps" />
154+
<exclude name="Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps" />
155+
<exclude name="Squiz.NamingConventions.ValidFunctionName.ScopeNotCamelCaps" />
156+
<exclude name="Squiz.Objects.ObjectInstantiation.NotAssigned" />
157+
<exclude name="Squiz.Operators.ComparisonOperatorUsage" />
158+
<exclude name="Squiz.PHP.CommentedOutCode" />
159+
<exclude name="Squiz.PHP.DisallowBooleanStatement" />
160+
<exclude name="Squiz.PHP.DisallowComparisonAssignment" />
161+
<exclude name="Squiz.PHP.DisallowInlineIf" />
162+
<exclude name="Squiz.PHP.EmbeddedPhp" />
163+
<exclude name="Squiz.Strings.ConcatenationSpacing" />
164+
<exclude name="Squiz.WhiteSpace" />
165+
</rule>
166+
167+
<rule ref="Squiz.Commenting.EmptyCatchComment" />
168+
169+
<!-- exclude some checks for the examples-->
170+
<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
171+
<exclude-pattern>examples</exclude-pattern>
172+
</rule>
173+
174+
<rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
175+
<exclude-pattern>examples</exclude-pattern>
176+
</rule>
177+
178+
<rule ref="PSR1.Files.SideEffects.FoundWithSymbols">
179+
<exclude-pattern>examples</exclude-pattern>
180+
</rule>
181+
182+
<rule ref="Squiz.Classes.ClassFileName.NoMatch">
183+
<exclude-pattern>examples</exclude-pattern>
184+
</rule>
185+
186+
<rule ref="Squiz.PHP.DiscouragedFunctions.Discouraged">
187+
<exclude-pattern>examples</exclude-pattern>
188+
</rule>
189+
190+
</ruleset>

phpdoc.xml

Lines changed: 0 additions & 20 deletions
This file was deleted.

phpdoc.xml.dist

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<phpdocumentor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="https://www.phpdoc.org"
4+
xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/phpDocumentor/phpDocumentor/master/data/xsd/phpdoc.xsd"
5+
configVersion="3"
6+
>
7+
<!-- https://docs.phpdoc.org/3.0/guide/references/configuration.html#configuration -->
8+
<paths>
9+
<output>docs</output>
10+
<cache>.build/phpdocs-cache</cache>
11+
</paths>
12+
<version number="3.0.0">
13+
<api>
14+
<source dsn=".">
15+
<path>src</path>
16+
<path>tests</path>
17+
</source>
18+
<extensions>
19+
<extension>php</extension>
20+
</extensions>
21+
</api>
22+
</version>
23+
<setting name="template.color" value="deep-purple"/>
24+
<template name="default" />
25+
</phpdocumentor>

0 commit comments

Comments
 (0)