我正在开发一个(PHP)项目,每次提交代码时都存在一些不符合编码规范的问题。我使用git进行版本控制。是否有自动化的代码格式化方法,使得所有的代码都保持干净整洁?
我正在开发一个(PHP)项目,每次提交代码时都存在一些不符合编码规范的问题。我使用git进行版本控制。是否有自动化的代码格式化方法,使得所有的代码都保持干净整洁?
pre-commit
钩子中修改文件或尝试修改文件可能会弄乱它们。因此,无论你使用什么版本控制系统都没有关系。适当的做法是使用工具通过编辑器或作为你开发过程中运行的流程(手动或半自动)来格式化代码。例如,vim有一个=
函数可以自动缩进代码,正如其他人提到的Pear's beautifier也是其中一种可能的选择。git commit --no-verify
跳过预提交钩子。$ more foo.php
<?php
function bar() {
}
$ git add foo.php
$ git commit -v
running php/lint.php ... OK
running php/phpcs.php ... FAIL
phpcs -n -s --extensions=php,ctp --encoding=UTF-8 --standard=Cake '/tmp/cakephp-git-hooks'
FILE: foo.php
---------------------------------------
FOUND 3 ERROR(S) AFFECTING 2 LINE(S)
---------------------------------------
2 | ERROR | Space indented: Tabs for indents, spaces for alignment (Cake.WhiteSpace.ForceTabIndent)
2 | ERROR | Line indented incorrectly; expected 0 spaces, found 4 (Cake.WhiteSpace.ScopeIndent.Incorrect)
3 | ERROR | Space indented: Tabs for indents, spaces for alignment (Cake.WhiteSpace.ForceTabIndent)
---------------------------------------
Time: 0 seconds, Memory: 3.75Mb
$
$ git commit -v --no-verify -m "dummy commit"
running misc/happy-commits ... OK
[2.1 2c432f1] dummy commit
1 files changed, 3 insertions(+), 0 deletions(-)
create mode 100644 foo.php
$
提交成功 - 即使代码标准未达到要求
Git知道钩子。您可以利用它们在每次提交被接受到存储库之前运行某种形式的checkstyle应用程序。检查存储库中的.git/hooks/
文件。这样可以拒绝提交。不确定是否可以修改提交。
有一些“PHP美化器”脚本(其中一个在PEAR中),你可以从git的提交钩子中调用它们。
Git有提交钩子,允许您在提交之前执行命令。不建议使用这些提交钩子来更改源代码,因为这可能会导致意外的结果。
但是,您可以利用git预提交钩子来执行PHP代码嗅探器。 PHP代码嗅探器是一种工具,可通过PEAR安装,它将指示您偏离了标准的位置。您可以设置自己的标准或使用现有的标准,如PEAR标准。提交钩子可以设置为显示所有违规行为(非标准代码)并停止提交。如果代码符合标准,则可以允许提交。
这是PHP代码嗅探器的链接:
http://pear.php.net/package/PHP_CodeSniffer/redirected
这是一个关于git预提交钩子的不错示例,用于php代码嗅探器。https://gist.github.com/1892861
一些关于Git提交钩子的文档: