richcongress/static-analysis

一个用于快速设置 RichCongress 静态分析工具的库

v0.2.0 2024-06-03 09:40 UTC

This package is auto-updated.

Last update: 2024-09-03 10:14:23 UTC


README

Package version Contributions Welcome License

静态分析检查代码是否符合配置。在这个仓库中,你可以找到一个默认配置和一个执行静态分析的脚本。

安装

使用 composer 执行以下命令:composer require richcongress/static-analysis --dev

配置

文件

在项目文件夹中创建指向配置文件的符号链接

ln -sr ./vendor/richcongress/static-analysis/configs/phpstan.neon ./
ln -sr ./vendor/richcongress/static-analysis/configs/phpinsights.php ./
ln -sr ./vendor/richcongress/static-analysis/configs/php-cs-fixer.dist.php ./.php-cs-fixer.dist.php

如果你在捆绑中使用此方法,你还需要在 composer.json 中排除 phpinsights.php 以从自动加载中排除

{
    "autoload": {
        "exclude-from-classmap": ["phpinsights.php"]
    }
}

如果你想复制文件而不是创建符号链接,只需将 ln 改为 cp

cp ./vendor/richcongress/static-analysis/configs/phpstan.neon ./
cp ./vendor/richcongress/static-analysis/configs/phpinsights.php ./
cp ./vendor/richcongress/static-analysis/configs/php-cs-fixer.dist.php ./.php-cs-fixer.dist.php

Git 钩子

要轻松添加在 pre-push 上执行静态分析的钩子,请将以下代码添加到您的 composer.json 文件中

{
    "scripts": {
        "post-install-cmd": [
            "[ $COMPOSER_DEV_MODE -eq 0 ] || cghooks add --ignore-lock"
        ],
        "post-update-cmd": [
            "[ $COMPOSER_DEV_MODE -eq 0 ] || cghooks update"
        ]
    },

    "extra": {
        "hooks": {
            "pre-commit": [
                "docker-compose exec -T application ./vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix -n"
            ],
            "pre-push": [
                "docker-compose exec -T application ./vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix --dry-run -n",
                "docker-compose exec -T application ./vendor/richcongress/static-analysis/bin/static_analysis"
            ]
        }
    }
}

请注意,如果你使用 docker 容器并且在外部进行提交,它将在容器外部执行。

PHP CS Fixer 文件监视器

你可以设置一个文件监视器,在文件保存时自动运行 php-cs-fixer。对于 PhpStorm,可以使用 configs/watcherTasks.xml 配置作为示例,或者如果你没有其他监视器在你的配置中,可以直接将其复制到你的 .idea/ 文件夹

cp ./vendor/richcongress/static-analysis/configs/watcherTasks.xml .idea/

版本控制

static-analysis 遵循 语义版本控制。简而言之,方案是 MAJOR.MINOR.PATCH,其中

  1. MAJOR 在出现破坏性更改时增加,
  2. MINOR 在向后兼容的方式中添加新功能时增加,
  3. PATCH 在向后兼容的方式中修复错误时增加。

低于 1.0.0 的版本被认为是实验性的,并且破坏性更改可能会随时发生。

贡献

欢迎贡献!有很多方式可以贡献,我们非常感谢所有贡献者。以下是一些主要的贡献方式

  • 错误报告:虽然我们努力制作高质量的软件,但错误仍然可能发生,我们无法修复我们不知道的问题。所以请即使你不确定或者只是想提问,也请报告问题。如果问题可能表明文档仍需要改进!
  • 功能请求:你的用例没有被当前 api 覆盖?想要建议更改或添加某些内容?我们很高兴阅读并开始讨论以尝试找到最佳可能的解决方案。
  • 拉取请求:想要贡献代码或文档?我们非常愿意!如果你需要帮助开始,GitHub 有关于 拉取请求 的文档。我们使用 “fork and pull” 模型,其中贡献者将更改推送到他们的个人分支,然后创建对主存储库的拉取请求。请确保你的拉取请求针对 master 分支。

作为提醒,所有贡献者都应遵循我们的 行为准则

许可证

static-analysis 在 MIT 许可证的条款下分发。

详情请见 许可协议