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

确保git提交期间的编码风格,git,coding-style,uncrustify,Git,Coding Style,Uncrustify,在我的公司,我设置了一个持续集成测试,当有人在服务器上推送代码时,我运行测试 现在我想检查代码是否和我们的基本编码规则匹配,第一条规则是“在代码上运行mogrify!” 有什么事要做吗?检查“书架”?此分析的输出可以存储在文件或其他文件中 谢谢在git提交期间,您可以要求用户设置一个预提交钩子来运行测试,并阻止提交 但是您不能保证您的用户确实遵守该策略(或者使用git commit-no-verify绕过它) 因此,您应该在中央存储库(所有开发人员都在推送的存储库)中放置一个pre-receiv

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

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

有什么事要做吗?检查“书架”?此分析的输出可以存储在文件或其他文件中


谢谢

在git提交期间,您可以要求用户设置一个
预提交
钩子来运行测试,并阻止提交

但是您不能保证您的用户确实遵守该策略(或者使用
git commit-no-verify绕过它)

因此,您应该在中央存储库(所有开发人员都在推送的存储库)中放置一个
pre-receive
钩子,以便在检测到工具未正确运行时拒绝推送

关于工具,可以设置为。但它确实如此。
替代方案是可行的,但似乎已经过时


您在服务器端应用的想法可以作为预接收钩子使用(这意味着您将拒绝推送,如果您检测到推送的代码与接收到的相同代码之间存在差异并且“未经验证”)。

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

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


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

我建议使用适当的插件设置jenkins服务器。 然后,此CI服务器将对git的所有提交运行您想要的任何测试;模块测试、编码风格执行器、系统测试等

对于代码样式检查器,您可以使用:
对于C#-

我确信您可以使用git钩子做一些事情,但我不知道如何提供答案。或者,您可以使用诸如EditorConfig之类的实用工具强制执行一种编码样式,该工具插入到许多代码编辑器中,使用起来非常简单:如果您使用标准it支持,可能会帮助您检查“基本编码规则”,例如:MySource、PEAR、PHPCS、PSR1、PSR2、Squiz和Zendthanks,我知道git挂钩我使用挂钩来构建和运行我的单元测试。我正在寻找一个用来验证代码是否遵守我们的规则的嘟嘟声。我的第一个想法是对源代码运行uncrustify,并将结果与原始文件进行比较,如果有差异,则意味着开发人员在提交之前没有运行uncrustify。@TheObjCGuy要检查哪种语言?ObjectiveC?@TheObjCGuy我已经编辑了我的答案。哇!奥克林太棒了!在没有这个工具的情况下我是如何工作的?:)这正是我想要的。谢谢@TheObjCGuy你是如何从git hook运行OCLint的?我现在知道git预提交钩子是如何工作的了。我甚至知道奥克林特是干什么的。但是你能帮我从git预提交钩子中运行OCLint吗?任何帮助都将不胜感激。