在多人合作的项目中,保持代码规范非常重要
风格混乱不统一会造成阅读困难、工作交接困难、增加 Code Review 成本等问题,还可能会造成潜在的 Bug
今天分享一下几个代码风格工具
- IDE CodeStyle
- EditorConfig
- CodeSniffer
- SonarQube
- StyleCI
PHPStorm设置CodeStyle
PHPStorm 中有 CodeStyle
配置,是格式化代码时的依据。当你新写或修改了一段代码,想要 Commit
的时候,先选中你的代码使用 CTRL+ALT+L
格式化一下。
设置Code Style为PSR2
注: 每行的字符数应该软性保持在80个之内, 理论上一定不可多于120个
EditorConfig
在团队开发中,统一的代码格式非常重要。可能团队对于后端代码格式有专门的规定,对于前端代码格式也有专门规定
但是由于开发习惯的不同,后端 PHP 可能使用的是 PHPStorm,前端开发可能使用的是 Visual Studio Code,这样还是没有避免问题出现
而今天介绍的 EditorConfig 可以帮助开发人员在不同的编辑器和 IDE 中定义和维护一致的编码风格
介绍
EditorConfig 不是什么软件,而是一个名称为 .editorconfig 的自定义文件
该文件用来定义项目的编码规范,编辑器的行为会与此文件中定义的一致,并且其优先级比编辑器自身的设置要高,这在多人合作开发项目时十分有用
有些编辑器默认支持 EditorConfig,如 JetBrains 系列;而有些编辑器则需要安装插件,如 ATOM、Sublime、VS Code 等
在项目中时,EditorConfig 会在当前文件的目录和其每一级父目录查找 .editorconfig 文件,直到有一个配置文件写了 root=true
文件是从上往下读取,并且最近的配置文件会被最先读取。如果文件没有进行某些配置,则使用编辑器默认的设置。
语法
属性 | 说明 |
---|---|
indent_style | 设置缩进风格(tab是硬缩进,space为软缩进) |
indent_size | 用一个整数定义的列数来设置缩进的宽度,如果indent_style为tab,则此属性默认为tab_width |
tab_width | 用一个整数来设置tab缩进的列数。默认是indent_size |
end_of_line | 设置换行符,值为lf、cr和crlf |
charset | 设置编码,值为latin1、utf-8、utf-8-bom、utf-16be和utf-16le |
trim_trailing_whitespace | 设为true表示会去除换行行首的任意空白字符 |
insert_final_newline | 设为true表示使文件以一个空白行结尾 |
root | 表示是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig文件 |
以我的为例,文件的字符集是 UTF-8:
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
CodeSniffer
PHP_CodeSniffer 是一个开源工具,能够检测出不符合规范的代码并发出警告或报错(可设置报错等级)
- Q:通过这个工具我们能达到什么效果?
- A:类似于原生代码错误的提示(IDE标红),鼠标移到上面时会显示错误的内容。
PHP_CodeSniffer 使用
首先使用 Composer 全局安装:
composer global require "squizlabs/php_codesniffer=*"
安装好后会在 Composer 目录的 /vendor/bin 下生成可执行文件,例如 _phpcs.bat_。
- 步骤1:打开 PHPStorm 进入设置页
- 步骤2:接着点击 Languages & Frameworks -> PHP -> Code Sniffer,点击 Configuration 右侧的按钮,
- 步骤3:选择 PHP Code Sniffer (phpcs) path: 的路径,就是刚才生成的那个 phpcs.bat 的路径。
- 步骤4:选择之后 点击Validate提示验证成功
- 步骤5:点击Editor->Inspections(或者点右下角的小医生图标,再点 Configure inspections)展开后点击右侧的PHP
- 步骤6:勾选PHP Code Sniffer Validation,选择右侧的PSR2(没有时点击刷新按钮)
- 步骤7:点击验证成功
注: 如果PHP文件过大过长,会出现超时的错误,需要修改 timeout
值,MAX 30(s)。提示数量也一样,最大 100。
注: IDE版本不同菜单会有所不同,直接搜索菜单名即可。
成功后代码里会出现对应的提示,默认是下图所示的下划线型的 Warning
警告
为了和 IDE 已有的 Warning
区分开,可以设置定制的 Severity
,例如为提示增加一个背景色,或者是在右侧提示的颜色
未完待续
以上列举的措施,实施起来决定权在每个开发手里,不能百分百保证风格
必须要在代码的终端实现检查,最后加入持续集成或发布流程中