Skip to content

Commit 874a2d6

Browse files
authored
Merge pull request #20 from swordqiu/hotfix/qj-github-action-update
fix: github action update
2 parents 961042e + 00b68aa commit 874a2d6

File tree

1 file changed

+4
-191
lines changed

1 file changed

+4
-191
lines changed

.github/workflows/php-static-analysis.yml

Lines changed: 4 additions & 191 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ name: PHP Static Code Analysis
22

33
on:
44
push:
5-
branches: [ main, master, develop ]
5+
branches: [ master ]
66
pull_request:
7-
branches: [ main, master, develop ]
7+
branches: [ master ]
88

99
jobs:
1010
static-analysis:
@@ -25,193 +25,6 @@ jobs:
2525
extensions: curl, json, mbstring, openssl
2626
coverage: none
2727

28-
- name: Install PHPStan
28+
- name: Run static analysis
2929
run: |
30-
wget https://github.com/phpstan/phpstan/releases/latest/download/phpstan.phar
31-
chmod +x phpstan.phar
32-
sudo mv phpstan.phar /usr/local/bin/phpstan
33-
34-
- name: Install PHP_CodeSniffer
35-
run: |
36-
composer global require squizlabs/php_codesniffer
37-
echo "$HOME/.composer/vendor/bin" >> $GITHUB_PATH
38-
39-
- name: Create PHPStan configuration
40-
run: |
41-
cat > phpstan.neon << 'EOF'
42-
parameters:
43-
level: 3
44-
paths:
45-
- src/
46-
- examples/
47-
excludePaths:
48-
- src/vendor/
49-
checkMissingIterableValueType: false
50-
checkGenericClassInNonGenericObjectType: false
51-
ignoreErrors:
52-
- '#Call to an undefined method [a-zA-Z0-9\\_]+::[a-zA-Z0-9\\_]+\(\)#'
53-
- '#Access to an undefined property [a-zA-Z0-9\\_]+::\$[a-zA-Z0-9\\_]+#'
54-
- '#Undefined variable \$[a-zA-Z0-9\\_]+#'
55-
- '#Undefined constant [a-zA-Z0-9\\_]+#'
56-
EOF
57-
58-
- name: Run PHPStan
59-
run: phpstan analyse --no-progress
60-
61-
- name: Create PHP_CodeSniffer configuration
62-
run: |
63-
cat > phpcs.xml << 'EOF'
64-
<?xml version="1.0"?>
65-
<ruleset name="Cloudpods PHP SDK">
66-
<description>PHP_CodeSniffer rules for Cloudpods PHP SDK</description>
67-
68-
<!-- Include all files in src and examples directories -->
69-
<file>src/</file>
70-
<file>examples/</file>
71-
72-
<!-- Exclude vendor directory -->
73-
<exclude-pattern>*/vendor/*</exclude-pattern>
74-
75-
<!-- Use PSR-12 standard -->
76-
<rule ref="PSR12"/>
77-
78-
<!-- Custom rules -->
79-
<rule ref="Generic.Files.LineLength">
80-
<properties>
81-
<property name="lineLimit" value="120"/>
82-
<property name="absoluteLineLimit" value="150"/>
83-
</properties>
84-
</rule>
85-
86-
<!-- Ignore some common issues for this project -->
87-
<rule ref="PSR1.Classes.ClassDeclaration.MissingNamespace">
88-
<exclude-pattern>*/examples/*</exclude-pattern>
89-
</rule>
90-
91-
<rule ref="PSR1.Files.SideEffects.FoundWithSymbols">
92-
<exclude-pattern>*/examples/*</exclude-pattern>
93-
</rule>
94-
95-
<!-- Allow short array syntax for this project -->
96-
<rule ref="Generic.Arrays.DisallowShortArraySyntax">
97-
<exclude-pattern>*</exclude-pattern>
98-
</rule>
99-
</ruleset>
100-
EOF
101-
102-
- name: Run PHP_CodeSniffer
103-
run: phpcs --standard=phpcs.xml --colors
104-
105-
- name: Check for syntax errors
106-
run: |
107-
echo "Checking PHP syntax..."
108-
find src/ examples/ -name "*.php" -exec php -l {} \;
109-
110-
- name: Run basic linting
111-
run: |
112-
echo "Running basic linting checks..."
113-
find src/ examples/ -name "*.php" -exec php -r "
114-
\$file = \$argv[1];
115-
\$content = file_get_contents(\$file);
116-
117-
// Check for common issues
118-
\$issues = [];
119-
120-
// Check for unclosed quotes
121-
if (substr_count(\$content, '\"') % 2 !== 0) {
122-
\$issues[] = 'Unclosed double quotes';
123-
}
124-
if (substr_count(\$content, \"'\") % 2 !== 0) {
125-
\$issues[] = 'Unclosed single quotes';
126-
}
127-
128-
// Check for unclosed brackets
129-
if (substr_count(\$content, '{') !== substr_count(\$content, '}')) {
130-
\$issues[] = 'Unclosed braces';
131-
}
132-
if (substr_count(\$content, '(') !== substr_count(\$content, ')')) {
133-
\$issues[] = 'Unclosed parentheses';
134-
}
135-
136-
// Check for missing semicolons (basic check)
137-
\$lines = explode(\"\\n\", \$content);
138-
foreach (\$lines as \$lineNum => \$line) {
139-
\$line = trim(\$line);
140-
if (!empty(\$line) && !preg_match('/^[\/\*#\s\{\}\(\)\[\]]/', \$line)) {
141-
if (!preg_match('/[;\{\}]$/', \$line)) {
142-
\$issues[] = 'Possible missing semicolon on line ' . (\$lineNum + 1);
143-
}
144-
}
145-
}
146-
147-
if (!empty(\$issues)) {
148-
echo \"Issues found in \$file:\\n\";
149-
foreach (\$issues as \$issue) {
150-
echo \" - \$issue\\n\";
151-
}
152-
exit(1);
153-
}
154-
" {} \;
155-
156-
- name: Check file structure
157-
run: |
158-
echo "Checking file structure..."
159-
echo "PHP files found:"
160-
find src/ examples/ -name "*.php" | wc -l
161-
echo "Directories:"
162-
find src/ examples/ -type d | sort
163-
164-
- name: Check for common PHP issues
165-
run: |
166-
echo "Checking for common PHP issues..."
167-
find src/ examples/ -name "*.php" -exec php -r "
168-
\$file = \$argv[1];
169-
\$content = file_get_contents(\$file);
170-
171-
// Check for potential issues
172-
\$warnings = [];
173-
174-
// Check for hardcoded paths
175-
if (preg_match('/\/home\/|\/var\/|\/tmp\//', \$content)) {
176-
\$warnings[] = 'Hardcoded paths detected';
177-
}
178-
179-
// Check for debug code
180-
if (preg_match('/var_dump\(|print_r\(|die\(|exit\(/', \$content)) {
181-
\$warnings[] = 'Debug code detected (var_dump, print_r, die, exit)';
182-
}
183-
184-
// Check for potential security issues
185-
if (preg_match('/eval\(|exec\(|system\(|shell_exec\(/', \$content)) {
186-
\$warnings[] = 'Potentially dangerous functions detected';
187-
}
188-
189-
if (!empty(\$warnings)) {
190-
echo \"Warnings in \$file:\\n\";
191-
foreach (\$warnings as \$warning) {
192-
echo \" - \$warning\\n\";
193-
}
194-
}
195-
" {} \;
196-
197-
- name: Generate analysis report
198-
if: always()
199-
run: |
200-
echo "## PHP Static Analysis Report" >> $GITHUB_STEP_SUMMARY
201-
echo "" >> $GITHUB_STEP_SUMMARY
202-
echo "**PHP Version:** ${{ matrix.php-version }}" >> $GITHUB_STEP_SUMMARY
203-
echo "**Analysis Date:** $(date)" >> $GITHUB_STEP_SUMMARY
204-
echo "" >> $GITHUB_STEP_SUMMARY
205-
echo "### Analysis Tools Used:" >> $GITHUB_STEP_SUMMARY
206-
echo "- PHPStan (Level 3)" >> $GITHUB_STEP_SUMMARY
207-
echo "- PHP_CodeSniffer (PSR-12)" >> $GITHUB_STEP_SUMMARY
208-
echo "- PHP Syntax Check" >> $GITHUB_STEP_SUMMARY
209-
echo "- Basic Linting" >> $GITHUB_STEP_SUMMARY
210-
echo "- Security Checks" >> $GITHUB_STEP_SUMMARY
211-
echo "" >> $GITHUB_STEP_SUMMARY
212-
echo "### Directories Analyzed:" >> $GITHUB_STEP_SUMMARY
213-
echo "- src/" >> $GITHUB_STEP_SUMMARY
214-
echo "- examples/" >> $GITHUB_STEP_SUMMARY
215-
echo "" >> $GITHUB_STEP_SUMMARY
216-
echo "### Files Checked:" >> $GITHUB_STEP_SUMMARY
217-
find src/ examples/ -name "*.php" | wc -l | xargs echo "- Total PHP files:" >> $GITHUB_STEP_SUMMARY
30+
./scripts/static-analysis.sh

0 commit comments

Comments
 (0)