基础 - 自动检查代码 ¶
本文导航
作者:KK
发表日期:2016.12.7
¶
通常构建过程我都不会直接写什么shell代码,而是直接调用其它脚本,比如/bin/bash xxx.sh
或者php xxx.php
这样
实现自动检查代码,我也是把检查逻辑写到了PHP脚本里,附上大概的代码提供参考,主要是检查语法错误、代码规范
#是否检查代码错误,使用Jenkins的参数化构建来控制,因为有些第三方类库不一定是这个代码规范,检查到了又不好改它们
$isCheckStyle = !isset($argv[1]) ? true : ($argv[1] == 1 ? true : false);
#获取最新更新的PHP文件
exec('pwd', $pwd);
exec('find ' . getcwd() . ' -newer ' . $pwd[0] . '/../builds/lastSuccessfulBuild| grep -E "(\.php)$"', $newerFiles); //上次成功到本次的新增PHP文件
$hasError = false;
foreach($newerFiles as $file) {
exec('php -l ' . $file, $syntaxResult, $code); //检查语法
if($code){
$hasError = true;
$syntaxErrorCount++;
echo implode(PHP_EOL, $syntaxResult);
continue;
}
if(!$isCheckStyle){
continue;
}
exec('/root/pear/bin/phpcs --standard=我扩展的代码规范名称 ' . $file, $styleResult, $code2);
if($code2){
$hasError = true;
$codeStyleErrorCount++;
array_pop($styleResult); //单纯只是为了整理输出排版
array_pop($styleResult);
echo implode(PHP_EOL, $styleResult);
}
}
if($hasError){
if($syntaxErrorCount){
echo '一共检测到 ' . $syntaxErrorCount . ' 个语法错误' . PHP_EOL;
}
if($codeStyleErrorCount){
echo '一共检测到 ' . $codeStyleErrorCount . ' 个文件存在代码风格问题' . PHP_EOL;
}
exit(1);
}
这个脚本放哪里 ¶
可就算是在构建的shell里写了php check-codes.php
的话,那其实我们应该将check-codes.php
这个脚本放在服务器的哪个目录呢?其实就是每次构建输出提示的Building in workspace ……
这里的目录就是当前的进程工作目录了
就算是用程序获取当前工作目录办法也挺简单的,你在shell里前面加多一句pwd
命令,这样就输出了当前的工作目录了嘛
只要知道了当前目录,放在这里,或是放在其它地方也可以自己把握了,把调用路径写对就是了
注意让jenkins
这个用户能对脚本有可执行权限就行