我是Fxcop分析器样式检查器。我想从预提交运行/调用Fxcop,因此,如果Fxcop发现任何错误或字段,则Git Hook预提交应停止提交过程。我从没在Bash编程过,这是我第一次使用git hook。
任何我可以用来设置的建议都很棒。
为了将FxCop作为pre-commit
钩子运行,您需要安装FxCop as nuget package,然后像从命令行中那样使用MSBuild
来构建项目。当MSBuild
检测到任何错误时,它将以非零的退出代码退出。 [git
检测到pre-commit
钩子以非零退出代码退出时,将阻止提交通过。
根据Microsoft's documentation,这是您可以使用的命令行:
msbuild myproject.csproj /target:rebuild /verbosity:minimal
Git即使在Windows上也使用bash
执行钩子文件,因此命令行语法与常规cmd
有所不同。您可以尝试以下作为pre-commit
挂钩文件:
#!/bin/sh
'/c/Program Files (x86)/Microsoft Visual Studio/2019/Professional/MSBuild/Current/Bin/MSBuild.exe' ConsoleApp1.csproj /target:rebuild /verbosity:minimal
[假设ConsoleApp1.csproj
位于本地git存储库文件夹的根目录下,而我正在使用Visual Studio 2019(16.4.5),因此您可能需要根据环境进行调整。
它应该适用于.Net或.Net Core项目。
请注意,如果仅有警告,则MSBuild
不会以非零的退出代码退出。如果您希望某些规则失败,则可以配置FxCop severity,或者将MSBuild
与warnAsError开关一起使用。
此外,根据构建所需的时间,您可能需要考虑使用请求请求的构建管道,而不是pre-commit
钩子。