自动检查代码规范 - 持续集成自动检查

我现在是在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);
}

部署到持续集成后大大减少了人工检查成本,让团队成员自己看构建结果修正问题,只剩下少部分需要人工检查的了