ergebnis/php-cs-fixer-config

为 friendsofphp/php-cs-fixer 提供配置工厂和规则集工厂。

6.36.0 2024-09-02 11:45 UTC

README

Integrate Merge Release Renew

Code Coverage Type Coverage

Latest Stable Version Total Downloads Monthly Downloads

本项目提供了一个包含配置工厂和规则集工厂的 composer 包,用于 friendsofphp/php-cs-fixer

安装

运行

composer require --dev ergebnis/php-cs-fixer-config

用法

配置

选择一个规则集

在项目根目录创建配置文件 .php-cs-fixer.php

<?php

declare(strict_types=1);

use Ergebnis\PhpCsFixer\Config;

$ruleSet = Config\RuleSet\Php83::create();

$config = Config\Factory::fromRuleSet($ruleSet);

$config->getFinder()->in(__DIR__);
$config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/.php-cs-fixer.cache');

return $config;

Git

所有配置示例都使用缓存功能,如果您也想使用它,请将缓存目录添加到 .gitignore

+ /.build/
 /vendor/

使用头部配置规则集

💡 可选:指定一个头部

 <?php

 declare(strict_types=1);

 use Ergebnis\PhpCsFixer\Config;

+$header = <<<EOF
+Copyright (c) 2023 Andreas Möller
+
+For the full copyright and license information, please view
+the LICENSE file that was distributed with this source code.
+
+@see https://github.com/ergebnis/php-cs-fixer-config
+EOF;

-$ruleSet = Config\RuleSet\Php83::create();
+$ruleSet = Config\RuleSet\Php83::create()->withHeader($header);

 $config = Config\Factory::fromRuleSet($ruleSet);

 $config->getFinder()->in(__DIR__);
 $config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/.php-cs-fixer.cache');

 return $config;

这将启用并配置 HeaderCommentFixer,以便在 PHP 文件中添加文件头部,例如

 <?php

 declare(strict_types=1);

+/**
+ * Copyright (c) 2023 Andreas Möller
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE file that was distributed with this source code.
+ *
+ * @see https://github.com/ergebnis/php-cs-fixer-config
+ */

配置一个覆盖规则集

💡 可选:通过传递要合并的规则集合来覆盖规则集的规则

 <?php

 declare(strict_types=1);

 use Ergebnis\PhpCsFixer\Config;

-$ruleSet = Config\RuleSet\Php83::create();
+$ruleSet = Config\RuleSet\Php83::create()->withRules(Config\Rules::fromArray([
+    'mb_str_functions' => false,
+    'strict_comparison' => false,
+]));

 $config = Config\Factory::fromRuleSet($ruleSet);

 $config->getFinder()->in(__DIR__);
 $config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/.php-cs-fixer.cache');

 return $config;

配置一个注册并配置自定义修复程序的规则集

💡 可选:注册并配置自定义修复程序的规则

 <?php

 declare(strict_types=1);

 use Ergebnis\PhpCsFixer\Config;
 use FooBar\Fixer;

-$ruleSet = Config\RuleSet\Php83::create();
+$ruleSet = Config\RuleSet\Php83::create()
+    ->withCustomFixers(Config\Fixers::fromFixers(
+        new Fixer\BarBazFixer(),
+        new Fixer\QuzFixer(),
+    ))
+    ->withRules(Config\Rules::fromArray([
+        'FooBar/bar_baz' => true,
+        'FooBar/quz' => [
+            'qux => false,
+        ],
+    ]))
+]);

 $config = Config\Factory::fromRuleSet($ruleSet);

 $config->getFinder()->in(__DIR__);
 $config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/.php-cs-fixer.cache');

 return $config;

Makefile

如果您喜欢 Makefile,创建一个包含 coding-standards 目标的 Makefile

+.PHONY: coding-standards
+coding-standards: vendor
+    mkdir -p .build/php-cs-fixer
+    vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --diff --show-progress=dots --verbose

 vendor: composer.json composer.lock
     composer validate
     composer install

运行

make coding-standards

以自动修复编码标准违规。

Composer 脚本

如果您喜欢 composer 脚本,将 coding-standards 脚本添加到 composer.json

 {
   "name": "foo/bar",
   "require": {
     "php": "^8.1",
   },
   "require-dev": {
     "ergebnis/php-cs-fixer-config": "^6.21.0"
+  },
+  "scripts": {
+    "coding-standards": [
+      "mkdir -p .build/php-cs-fixer",
+      "php-cs-fixer fix --diff --show-progress=dots --verbose"
+    ]
   }
 }

运行

composer coding-standards

以自动修复编码标准违规。

GitHub Actions

如果您喜欢 GitHub Actions,将 coding-standards 任务添加到您的流程中

 on:
   pull_request: null
   push:
     branches:
       - main

 name: "Integrate"

 jobs:
+  coding-standards:
+    name: "Coding Standards"
+
+    runs-on: ubuntu-latest
+
+    strategy:
+      matrix:
+        php-version:
+          - "8.1"
+
+    steps:
+      - name: "Checkout"
+        uses: "actions/checkout@v2"
+
+      - name: "Set up PHP"
+        uses: "shivammathur/setup-php@v2"
+        with:
+          coverage: "none"
+          php-version: "${{ matrix.php-version }}"
+
+      - name: "Cache dependencies installed with composer"
+        uses: "actions/cache@v2"
+        with:
+          path: "~/.composer/cache"
+          key: "php-${{ matrix.php-version }}-composer-${{ hashFiles('composer.lock') }}"
+          restore-keys: "php-${{ matrix.php-version }}-composer-"
+
+      - name: "Install locked dependencies with composer"
+        run: "composer install --ansi --no-interaction --no-progress --no-suggest"
+
+      - name: "Create cache directory for friendsofphp/php-cs-fixer"
+        run: mkdir -p .build/php-cs-fixer
+
+      - name: "Cache cache directory for friendsofphp/php-cs-fixer"
+        uses: "actions/cache@v2"
+        with:
+          path: "~/.build/php-cs-fixer"
+          key: "php-${{ matrix.php-version }}-php-cs-fixer-${{ github.ref_name }}"
+          restore-keys: |
+            php-${{ matrix.php-version }}-php-cs-fixer-main
+            php-${{ matrix.php-version }}-php-cs-fixer-
+
+      - name: "Run friendsofphp/php-cs-fixer"
+        run: "vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.php --diff --dry-run --show-progress=dots --verbose"

变更日志

本项目维护者将此项目的显著更改记录在 变更日志 中。

贡献

本项目维护者建议遵循 贡献指南

行为准则

本项目维护者要求贡献者遵守 行为准则

一般支持策略

本项目提供有限的支持。

您可以通过 赞助 @localheinz为此项目相关的服务请求发票 来支持此项目的维护。

PHP 版本支持策略

本项目支持具有 活动和安全支持 的 PHP 版本。

本项目维护者在其初始发布后添加对 PHP 版本的支持,并在其达到安全支持的结束阶段时取消对该 PHP 版本的支持。

安全策略

本项目有一个安全策略

许可证

本项目使用MIT许可证

致谢

本项目受到localheinz/php-cs-fixer-config的启发,并取代了它。

本项目需要并启用了以下包中的自定义修复器

社交

关注Twitter上的@localheinz@ergebnis