codeigniter4 / devkit
CodeIgniter 库和项目的开发工具包
Requires
- php: ^7.4 || ^8.0
- codeigniter/coding-standard: ^1.5
- fakerphp/faker: ^1.9
- mikey179/vfsstream: ^1.6
- nexusphp/cs-config: ^3.6
- nexusphp/tachycardia: ^1.3 || ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.0
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.3 || ^10.5.16
- rector/rector: ^0.19 || ^1.0.0
- roave/security-advisories: dev-latest
- vimeo/psalm: ^5.0
Requires (Dev)
- codeigniter4/framework: ^4.1
- icanhazstring/composer-unused: ^0.8.2
This package is auto-updated.
Last update: 2024-08-24 01:30:23 UTC
README
CodeIgniter 库和项目的开发工具包
安装
通过 Composer 安装
composer config minimum-stability dev composer config prefer-stable true composer require --dev codeigniter4/devkit
包含的依赖项
样式和标准
测试和分析
Mocking
安全
其他工具
这些工具已经集成到工作流程中,但不是通过 Composer 包含的。如果您想在本地上使用它们,则需要安装。所有这些工具(除了 Rector)都可以通过 Phive 获取。
模板文件
提供的源文件(在 Template/ 目录中)应被视为使用指南,因为它们可能需要根据您的环境进行更改。这些假设基于以下内容
- 您的默认仓库分支设置为
develop
- 您使用 Composer 来管理所有必要的依赖项
- 您的源代码位于 app/ 目录中(对于项目)或 src/ 目录中(对于库)
- 您的单元测试位于 tests/ 目录中
- 您的 CodeIgniter 依赖项为
codeigniter4/framework
(某些路径需要根据dev-develop
进行更改)
工作流程
此工具包包括一些工作流程模板,用于将 GitHub Actions 集成到您的库或项目开发过程中。要将这些工作流程添加到您的仓库中,只需将工作流程复制到 Template/.github/workflows/ 目录中。
提示
在 源文件 中还包含一个 Dependabot 的配置,这将帮助您保持依赖项和工作流程的更新。
以下是每个工作流程的简要描述;有关每个工具的帮助,请参阅上面的链接。
Deptrac
需要 depfile.yaml
Deptrac 是一种“依赖追踪”工具,允许开发人员定义哪些组件可以相互访问。通过强制执行您设置的规则,这有助于保持您的项目架构逻辑和简洁。例如,您可能希望通过允许 Controller
使用任何 Model
但不允许反过来,来实施 MVC 风格的架构。
Infection
需要 infection.json.dist
仅仅因为您的测试达到了高代码覆盖率并不意味着它们是全面的。变异测试是一种衡量单元测试质量的方法。一个愚蠢的例子:您的代码有一个带有一个单元测试以实现 100% 覆盖率的增量函数
function increment(int $num1, int $num2): int { return $num1 + $num2; } function testIncrementWithZero() { $result = increment(42, 0); $this->assertSame(42, $result); }
Infection 将会重新运行您的单元测试,针对“变异”后的代码版本,这些代码版本应该会导致失败,并在它们仍然通过时报告“逃逸变异”。在这个例子中,Infection 将您的 increment()
函数变异为使用 -
而不是 +
,但由于您的测试用例仍然断言结果为 42
,因此它被认为是“逃逸”,您应该计划添加更多测试。
PHPCPD
PHP Copy-Paste Detector 分析您的代码,并在检测到超过一定行数的重复代码块时报告(默认:5)。在大多数情况下,这是代码结构不佳的迹象,并且是合并类或函数的机会。
PHP CS Fixer
PHP CS Fixer用于强制执行编码标准。一旦在配置文件中定义了规则,工作流程将检查您的代码是否符合定义,并对任何偏差进行失败。
PHPStan
需要 phpstan.neon.dist
静态分析是在发生之前捕获错误和问题的重大因素。PHPStan将根据提供的配置分析您的代码中的错误。
PHPUnit
需要 phpunit.xml.dist
单元测试自动化运行代码的所有可能场景,在将其用于生产之前。PHPUnit是一个高度可配置的框架和套件,用于编写和运行单元测试。此工作流程还配置PHPUnit报告代码覆盖情况并将结果上传到Coveralls.io(您需要一个免费账户,但也可以使用此工作流程而不使用Coveralls)。
Rector
需要 rector.php
Rector提供代码的自动化重构,允许您根据预定义的规则集进行大量更新。Rector可以基于其配置文件(rector.php)具有高度意见性,因此请务必阅读文档并找出最适合您的方案。此工作流程执行“干燥运行”以检查Rector可能会做出的任何更改,并在有匹配项时失败。
注意
Rector不断更新规则,因此您可能希望锁定您的仓库到Rector的最新已知工作版本以防止意外失败。在composer.json
中使用固定版本并使用dependabot更新它是最佳实践。
未使用
Composer Unused仅做一件事:检查您的代码是否实际使用了通过Composer包含的依赖项。当您的代码删除依赖项时,很容易忘记更新您的composer.json,因此此工作流程将帮助跟踪这些依赖项。
Vagrant托管
注意
Vagrantfile.dist
不再维护。它可能现在不起作用。欢迎贡献。
虚拟化是在您计划部署的环境中测试您的web应用的有效方式,即使您在不同的环境中开发。即使您使用相同的平台进行开发,虚拟化也提供了一个用于测试的隔离环境。
代码库包含一个src/Template/Vagrantfile.dist,可以复制到Vagrantfile并根据您的系统进行定制,例如启用对特定数据库或缓存引擎的访问。
设置
它假设您已为您自己的平台安装了VirtualBox和Vagrant。
Vagrant配置文件假设您已在其系统中设置了ubuntu/bionic64 Vagrant box。
> vagrant box add ubuntu/bionic64
测试
设置完成后,您可以使用以下命令在虚拟机中启动您的web应用:
> vagrant up
您的web应用将在https://127.0.0.1:8080上可用,您的构建的代码覆盖率报告在https://127.0.0.1:8081,并且用户指南在https://127.0.0.1:8082。
示例文件
除了模板文件外,此存储库还包括一些用于将CodeIgniter与其他第三方资源集成的示例。这些文件(在Examples/)可能会随时间变化,不应依赖它们进行任何其他操作,而应仅用作您自己代码的参考。