Joomla Coding Standards

Joomla! 项目很高兴地宣布,我们(终于)准备发布 Joomla! 代码规范 的 alpha 版本,该版本与 PHP_CodeSniffer 2.x 兼容。为了准备此版本,我们将对我们的代码规范存储库进行一些结构性更改,这可能会影响使用此存储库的开发者。

什么是代码规范?

代码规范有助于建立代码格式和结构的通用标准,从而使其更易于阅读和维护,尤其是在多个开发者处理同一代码库时。在像 Joomla! 这样的拥有数百位贡献者的开源项目中,这一点至关重要。

分支结构变更

第一个也是最“颠覆性”的变更将是当前分支结构的更改。目前,有两个分支:`master` 分支包含当前与 PHP_CodeSniffer 1.x 兼容的规则集,`phpcs-2` 分支是 2.x 版本的开发目标分支。在接下来的几周内,我们将把 2.x 规则集设为 `master` 分支,并将 1.x 规则集移动到 `1.x` 分支。为了促进此过渡,`1.x` 分支已经创建。

Composer 可用性

2.x 规则集设计为可以通过 Composer 安装。由于注册包会导致完整仓库在 Packagist 中列出,因此我们将考虑使 1.x 分支也可通过 Composer 安装所需的工作。

正确的版本控制

从历史上看,我们的代码规范存储库没有标签版本;使用它的说明通常是设置一个指向 master 分支的 git 子模块。展望未来,我们将开始对代码规范进行版本标记,类似于软件包的版本控制方式。

改进的管理和集成

在升级以支持 PHP_CodeSniffer 2.x 期间,我们对代码规范存储库进行了一些改进,以便将来更容易管理此资源。此外,PHP_CodeSniffer 2.x 提供了一些改进,可以帮助开发者集成和执行标准。

自动修复错误

2.x 规则集中最令人兴奋的功能之一是能够自动修复许多代码风格错误。我们代码标准中的自定义嗅探也添加了此自动修复功能。此功能可以帮助开发者和 Joomla! 项目节省大量时间,以确保代码标准合规性,而无需手动修复诸如行缩进之类的内容。

减少自定义嗅探

2.x 规则集还通过实现 PHP_CodeSniffer 中包含的规则来减少自定义嗅探的数量。此细微更改将减少维护自定义嗅探所需的工作量,并简化迁移到 PHP_CodeSniffer 的未来版本的可能性。

自定义嗅探的单元测试

2.x 规则集还添加了自定义规则的单元测试。这将有助于验证所做的任何更改都能按预期工作。

选择性地应用规则

从历史上看,我们的代码标准难以选择性地应用于排除第三方库或考虑向后兼容性项目。从 PHP_CodeSniffer 命令行只能有限地排除规则和第三方库的目录。现在,使用 2.x 规则集,使用包的项目可以创建自己的 project ruleset.xml,而不仅仅是直接使用 Joomla! ruleset.xml。project ruleset.xml 允许选择性地应用代码标准,以排除第三方库,考虑现有项目的向后兼容性,或针对不需要 PHP 5.3 兼容性的项目进行必要的调整。

感谢!

我们要感谢所有参与 PHPCS 2.x 工作 的人员,包括领导这项重大工作的 Walt Sorensen。