数据库设计对网站开发的影响,网站建设请示,辽宁海星建设集团有限公司网站,网络口碑推广公司给团队带入一个 代码格式化机器人 能提升团队的幸福度#xff0c;让团队的成员安心写代码#xff0c;不用关注代码格式化问题#xff0c;将格式代码这个粗活交给机器人去做。同时也能减少在代码审查里撕格式化问题的时间#xff0c;让更多的时间投入到更有价值的工作上本文… 给团队带入一个 代码格式化机器人 能提升团队的幸福度让团队的成员安心写代码不用关注代码格式化问题将格式代码这个粗活交给机器人去做。同时也能减少在代码审查里撕格式化问题的时间让更多的时间投入到更有价值的工作上本文来告诉大家如何给团队的 GitLab 平台上带入一个自动代码格式化机器人的方法本文所使用的工具和代码都是完全开源的请看 https://github.com/dotnet-campus/dotnetcampus.DotNETBuildSDK我所在的团队用的代码平台只有两个分别是 GitHub 和 GitLab 这两个。其中 GitHub 上有 GitHub 的 Action 平台基于此平台上做啥都特别方便在去年我就完成了给 GitHub 仓库配置自动代码格式化机器人请看 dotnet 基于 dotnet format 的 GitHub Action 自动代码格式化机器人在咱 dotnet 里面有官方发布的专门用于代码格式化的工具 dotnet format 工具。此工具也在 GitHub 上开源请看 dotnet/format: Home for the dotnet-format command引入自动代码格式化机器人相当于雇一个免费的工具人帮你不断进行 ctrlk ctrld 进行格式化代码想要在 GitLab 的仓库上引入 C# 自动代码格式化机器人可以通过组合两个工具来实现第一个工具是 dotnet format 工具进行代码格式化。另一个工具是将格式化完成的代码进行推送和创建合并请求为了方便大家使用我编写了另一个新的工具此工具合入了代码格式化和推送代码创建合并请求的功能使用方法特别简单。只有一句命令行调用即可完成格式化代码和推送。此工具基于 dotnet tool 发布大家部署起来也只需要一句话给团队引入自动代码格式化机器人只需要以下两句代码分别是部署和执行- dotnet tool update -g dotnetCampus.GitLabCodeFormatBot # 安装或更新工具- AutomateFormatCodeAndCreateGitLabMergeRequest -Token $Token # 格式化代码推送代码和创建合并请求如以下代码就是我所在团队里面的 .gitlab-ci.yml 配置只需要如下几句话即可自动在 dev 分支有推送的时候自动格式化代码然后创建一个创建合并请求stages:- buildFormatCode:# 自动格式化代码机器人将使用 dotnet format 格式化# 格式化规则参阅 .editorconfig 文件stage: buildscript:- chcp 65001 # 解决中文乱码- dotnet tool update -g dotnetCampus.GitLabCodeFormatBot # 安装或更新工具- AutomateFormatCodeAndCreateGitLabMergeRequest -Token $Token # 格式化代码推送代码和创建合并请求only:- dev # 只有在 dev 分支有推送时才进行自动格式化运行效果如下对于 AutomateFormatCodeAndCreateGitLabMergeRequest 命令是支持传入丰富的参数的参数列表如下-CodeFormatBranch: 用于给格式化代码使用的分支默认是 t/bot/FixCodeFormatting 分支-GitLabPushUrl: 用于上传代码的 GitLab 地址格式如 gitgitlab.sdlsj.net:lindexi/foo.git 地址。可选默认将通过环境变量拼接 git$CI_SERVER_HOST:$CI_PROJECT_PATH.git 地址-GitLab: GitLab 地址如 https://gitlab.sdlsj.net 。可选默认将通过环境变量获取 GitLab 的 $CI_SERVER_URL 变量-Token: 拥有创建 MergeRequest 的 Token 值可在 GitLab 上的 profile/personal_access_tokens 生成。可选默认将通过环境变量获取 GitLab 的 Token 变量。此变量需要运维手动设置才有值详细请参阅下文-ProjectId: 将要创建 MergeRequest 的仓库项目 Id 值。可选默认将通过环境变量获取 GitLab 的 $CI_PROJECT_ID 常量也就是当前项目-TargetBranch: 将从 SourceBranch 合并到 TargetBranch 分支。可选默认将通过环境变量获取 GitLab 的 $CI_DEFAULT_BRANCH 分支也就是仓库的默认分支-SourceBranch: 将从 SourceBranch 合并到 TargetBranch 分支。可选默认将通过环境变量获取 GitLab 的 $CI_COMMIT_BRANCH 分支也就是当前 CI 正在运行分支-Title: 提交 MergeRequest 的标题。可选默认是 [Bot] Automated PR to fix formatting errors 字符串在 GitLab 上将会在调用命令时通过环境变量传入很多变量因此以上的大部分可选的命令都是可以不用输入有一点需要特别关注的是 Token 的生成这个是需要大家自己配置的详细请参阅 dotnet tool 创建 GitLab 合并请求 Merge Requests 工具如果觉得机器人默认自动格式化出来的内容不符合你的预期没关系自动格式化工具的格式化的配置是依靠仓库的 .editorconfig 文件进行配置更多请参阅 .NET code style rule options - .NET