自动检查代码规范 - 持续集成自动检查 ¶
我现在是在Jenkins上执行了一个检查代码规范的构建环节来调用Code_Sniffer,构建脚本用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);
}
部署到持续集成后大大减少了人工检查成本,让团队成员自己看构建结果修正问题,只剩下少部分需要人工检查的了