The*_*Guy 6 git coding-style uncrustify
我的公司我设置了持续集成测试,当有人在服务器上推送代码时我会运行测试.
现在我想检查代码是否与我们的基本编码规则匹配,第一条规则是"在代码上运行mogrify!"
有什么可以检查"现成的"?这个分析的输出可以存储在文件或其他东西上.
谢谢
在 git commit 期间,您可以要求您的用户设置一个pre-commit可以运行测试的钩子,并阻止提交。
但是您不能保证您的用户实际上遵循该策略(或使用 绕过它git commit --no-verify)。
因此,您应该pre-receive在中央存储库(所有开发人员都在推送的那个)中放置一个钩子,以便在您检测到您的工具没有正确运行时拒绝推送。
请参阅Git 钩子。
关于工具,uncrustify可以设置为pre-commit 钩子,但这可能有点慢。但它以前是这样使用的。此线程
中列出了替代方案,但似乎已经过时了。
您在服务器端应用的想法可以作为预接收钩子起作用(这意味着如果您检测到推送的代码与收到的相同代码之间的差异并“未加密”,您将拒绝推送)。
我建议使用类似 lint 的工具,例如对于 ObjectC,您可以使用oclint,但基本上任何可以输出到文本文件或 stdout 的编码标准验证工具 - 然后您可以使用 python 脚本,(因为 python 是钩子的默认语言),或者几乎任何可以解析该输出的东西,并将其与给定的基准进行比较,如果代码不比以前差,则返回 0,如果是,则返回 1。
然后可以将其用作钩子,在本地预提交或在服务器上预接收(或什至两者兼而有之)。
或者,如果您担心开发人员实际运行了给定的工具,您可以随时在该工具周围放置一个包装器,该包装器将诸如上次运行该工具时的代码的 MD5 之类的内容保存为已提交代码的一部分您可以编写一个预提交/接收钩子来检查该文件的 MD5/任何内容是否与提交的代码相匹配。
| 归档时间: |
|
| 查看次数: |
6485 次 |
| 最近记录: |