我是我的公司,我设置了一个持续集成测试,当有人在服务器上推送代码时我运行测试。
现在我想检查代码是否符合我们的基本编码规则,第一条规则是“在你的代码上运行 mogrify!”
有什么事要做这个检查“现成的”?这个分析的输出可以存储在一个文件或其他东西上。
谢谢
我是我的公司,我设置了一个持续集成测试,当有人在服务器上推送代码时我运行测试。
现在我想检查代码是否符合我们的基本编码规则,第一条规则是“在你的代码上运行 mogrify!”
有什么事要做这个检查“现成的”?这个分析的输出可以存储在一个文件或其他东西上。
谢谢
在 git 提交期间,您可以要求您的用户设置一个pre-commit
可以运行测试的钩子,并阻止提交。
但是您不能保证您的用户确实遵循该策略(或使用 绕过它git commit --no-verify
)。
因此,您应该pre-receive
在您的中央存储库(所有开发人员都在推送的那个)中放置一个钩子,以便在您检测到您的工具没有正确运行时拒绝推送。
请参阅Git 钩子。
关于工具,可以将uncrustify设置为预提交挂钩,但这可能会有点慢。但是以前也这样用过。此线程中列出了
替代方案,但似乎已经过时了。
您在服务器端应用的想法可以作为预接收钩子起作用(这意味着如果您检测到推送的代码与接收的相同代码和“未受信任”的代码之间的差异,您将拒绝推送)。
我建议使用类似 lint 的工具,例如对于 ObjectC,您可以使用oclint,但基本上任何可以输出到文本文件或标准输出的编码标准验证工具 - 然后您可以使用 python 脚本,(因为 python 是其中之一钩子的默认语言),或者几乎任何可以解析该输出的东西,并将其与给定的基准进行比较,然后如果代码不比以前差则返回 0,如果是则返回 1。
然后可以将其用作挂钩,既可以在本地预先提交,也可以在服务器上预先接收(甚至两者兼而有之)。
或者,如果您担心开发人员实际运行了给定的工具,您始终可以在工具周围放置一个包装器,作为提交代码的一部分,在该工具上次运行时保存类似代码的 MD5并且您可以编写一个预提交/接收钩子来检查该文件的 MD5/任何内容是否与已提交代码的匹配。
我建议使用适当的插件设置 jenkins 服务器。然后,这个 CI 服务器会在所有提交到 git 时运行你喜欢的任何测试;模块测试、编码风格执行器、系统测试等
对于代码样式检查器,您可以使用:对于 C# - http://joel.fjorden.se/static.php?page=CodeStyleEnforcer