CodeIgniter 库和项目的开发工具包

v1.2.3 2024-05-07 08:29 UTC

README

CodeIgniter 库和项目的开发工具包

安装

通过 Composer 安装

composer config minimum-stability dev
composer config prefer-stable true
composer require --dev codeigniter4/devkit

包含的依赖项

样式和标准

测试和分析

Mocking

安全

其他工具

这些工具已经集成到工作流程中,但不是通过 Composer 包含的。如果您想在本地上使用它们,则需要安装。所有这些工具(除了 Rector)都可以通过 Phive 获取。

模板文件

提供的源文件(在 Template/ 目录中)应被视为使用指南,因为它们可能需要根据您的环境进行更改。这些假设基于以下内容

  1. 您的默认仓库分支设置为 develop
  2. 您使用 Composer 来管理所有必要的依赖项
  3. 您的源代码位于 app/ 目录中(对于项目)或 src/ 目录中(对于库)
  4. 您的单元测试位于 tests/ 目录中
  5. 您的 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并根据您的系统进行定制,例如启用对特定数据库或缓存引擎的访问。

设置

它假设您已为您自己的平台安装了VirtualBoxVagrant

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/)可能会随时间变化,不应依赖它们进行任何其他操作,而应仅用作您自己代码的参考。