在git提交期间确保编码风格

时间:2013-12-02 22:39:24

标签: git coding-style uncrustify

我的公司我设置了一个持续集成测试,当有人在服务器上推送代码时我会运行测试。

现在我想检查代码是否与我们的基本编码规则匹配,第一条规则是“在代码上运行mogrify!”

有什么可以检查“现成的”?这个分析的输出可以存储在一个文件或其他东西上。

感谢

3 个答案:

答案 0 :(得分:2)

在git提交期间,您可以要求您的用户设置一个可以运行测试的pre-commit挂钩,并阻止提交。

但您无法保证您的用户实际遵循该政策(或使用git commit --no-verify绕过该政策)。

所以你应该在你的中央存储库(所有开发人员正在推动的那个)中添加pre-receive钩子,以便在检测到你的工具没有正确运行时拒绝推送。

请参阅Git Hooks

关于工具,uncrustify可以设置为pre-commit hook, but that can be a bit slow。但它有been used that way before 替代方案是listed in this thread,但似乎已经过时了。

您在服务器端应用的想法可以作为预接收挂钩(意味着如果您检测到推送的代码与收到的相同代码之间的差异并且“未解决”,则会拒绝推送)。

答案 1 :(得分:1)

我建议使用类似lint的工具,例如:对于ObjectC你可以使用oclint,但基本上任何编码标准验证工具都可以输出到文本文件或stdout - 然后你可以使用python脚本,(因为python是钩子的默认语言之一),或几乎任何可以解析该输出的东西,并将其与给定的基准进行比较,如果代码不比之前差,则返回0,如果是,则返回1。

然后可以将其用作钩子,在本地预先提交或在服务器上预先接收(或者甚至两者)。

或者,如果您担心开发人员实际上运行了一个给定的工具,您总是可以在工具周围放置一个包装器,作为已提交代码的一部分,在工具点处保存代码的MD5。上次运行,您可以编写一个预提交/接收挂钩,检查MD5 /该文件的任何内容是否与提交的代码匹配。

答案 2 :(得分:0)

我建议使用适当的插件设置jenkins服务器。 然后,这个CI服务器将在git的所有提交中运行您喜欢的测试;模块测试,编码风格执行器,系统测试等

对于代码样式检查器,您可以使用: 对于C# - http://joel.fjorden.se/static.php?page=CodeStyleEnforcer