aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts/linters/lint
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-07-21 08:08:15 +0900
committernsfisis <nsfisis@gmail.com>2026-07-21 08:08:45 +0900
commitc899a4675ca90507a420d901ef7fa26d8b285f23 (patch)
tree405b8049c3ac59c65d56792c96f4a8c316bf605b /scripts/linters/lint
parent6b16a2cd672edcbfeaf7988591db92ed4c594ddc (diff)
downloadphp-shirabe-c899a4675ca90507a420d901ef7fa26d8b285f23.tar.gz
php-shirabe-c899a4675ca90507a420d901ef7fa26d8b285f23.tar.zst
php-shirabe-c899a4675ca90507a420d901ef7fa26d8b285f23.zip
refactor(lint): rewrite structural linters from Ruby to PHP
Fold scripts/lint and scripts/linters/*.rb into a standalone Composer project under scripts/linters/, matching the scripts/plugin-class-classifier/ convention. Uses no external packages, only PHP + Composer autoloading. Verified byte-for-byte identical output against the original Ruby implementation, both on the current repo (all linters pass) and on a synthetic fixture exercising every violation type. Entry point moves from `scripts/lint` to `scripts/linters/lint`.
Diffstat (limited to 'scripts/linters/lint')
-rwxr-xr-xscripts/linters/lint38
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/linters/lint b/scripts/linters/lint
new file mode 100755
index 00000000..bcdf1c67
--- /dev/null
+++ b/scripts/linters/lint
@@ -0,0 +1,38 @@
+#!/usr/bin/env php
+<?php
+
+declare(strict_types=1);
+
+require __DIR__ . '/vendor/autoload.php';
+
+use Shirabe\Lint\Linters\CargoWorkspaceDependencies;
+use Shirabe\Lint\Linters\ContiguousUseBlock;
+use Shirabe\Lint\Linters\NoBannedUse;
+use Shirabe\Lint\Linters\NoDecorativeSectionComment;
+use Shirabe\Lint\Linters\NoFormatTrailingComma;
+use Shirabe\Lint\Linters\NoModRs;
+use Shirabe\Lint\Linters\NoStdCollectionsMaps;
+use Shirabe\Lint\Linters\NoUseAsAlias;
+use Shirabe\Lint\Linters\SortedDependencies;
+use Shirabe\Lint\Runner;
+
+$rootDir = dirname(__DIR__, 2);
+
+$runner = new Runner($rootDir, [
+ [new CargoWorkspaceDependencies(), []],
+ [new ContiguousUseBlock(), []],
+ [new NoBannedUse(), []],
+ [new NoDecorativeSectionComment(), [
+ 'crates/shirabe-semver/src/version_parser.rs',
+ ]],
+ [new NoFormatTrailingComma(), [
+ 'crates/shirabe/src/package/loader/root_package_loader.rs',
+ 'crates/shirabe-spdx-licenses/src/spdx_licenses.rs',
+ ]],
+ [new NoModRs(), []],
+ [new NoStdCollectionsMaps(), []],
+ [new NoUseAsAlias(), []],
+ [new SortedDependencies(), []],
+]);
+
+exit($runner->run() ? 0 : 1);