拒绝推送Git为C#(Unity)提交了基于代码的样式检查?

ste*_*eio 2 c# git unity-game-engine

我正在尝试为我的工作流程带来更多持续集成.一个挑战是找到一个与Git和Github很好地集成的样式检查器.理想情况下,如果我的样式检查器发现我的代码有任何问题,我希望我的提交被拒绝.

对于C#和Visual Studio,有很多样式检查器,如StyleCop,Resharper,FxCop,但是我无法使用这些工具来在拒绝提交的级别上强制执行检查.我也研究了pre-commit钩子但是不知道从哪里开始获取git来调用这些工具.

我可以用来设置系统的任何建议都会很棒.

son*_*nny 5

这是建立这样一个系统的建议.

要拒绝推送,您需要设置Git服务器端挂钩,特别是预接收挂钩.

特别是在GitHub上,我认为您需要GitHub企业来设置预接收挂钩以实施策略.正如这篇文章解释的:

出于显而易见的原因,GitHub将不允许您在其服务器上执行任意代码作为Git钩子的一部分.他们允许的唯一挂钩是通过他们的webhooks或集成的第三方服务.如果您需要运行一些自定义代码,则必须在某处托管并设置webhook以在您自己的服务器上运行它.

现在,您将要在服务器端钩子上运行样式检查器.理想情况下,为了便于运行此脚本,样式检查器需要能够从命令行运行.

例如,请参阅ReSharper的InspectCode命令行工具.您可以自动运行服务器端挂钩InspectCode,并相应地处理输出以确定代码是否符合您的样式设置.

(这听起来有点单调乏味,并且要求GitHub Enterprise可能对您不起作用.)

或者,您可以为此设置git预提交挂钩.(缺点是它需要在每台机器上手动安装预提交挂钩,并且在服务器端没有任何强制执行.)有关如何设置预提交挂钩的详细信息,请参阅此相关帖子.例如,您可以设置预提交挂钩来运行ReSharper InspectCode,并在找到任何代码检查时停止提交.此外,这篇相关文章对此主题也有一些类似的建议.

作为旁注,也许还有其他实践来完成你想要的东西.您可以将编码样式检查作为拉取请求和代码审查工作流程的一部分,以便在代码不满足您团队的编码标准时不会合并代码.在编码风格上讨论和(重新)与您的团队保持一致可能也是适当的.