Bazel skylark 脚本文件自动格式化
2019-01-18 16:26
471 查看
编码规范
从事过开源项目的同学都知道,通常都会在仓库中加入
CONTRIBUTING.md文件,内容就是如何规范编码的条条框框。不同的公司,不同的团队遵循的编码规范差别很大。大家最熟悉的应该就是
Google Coding Style, 这也是大多数公司使用的。
IDE 支持
当在某个项目中使用
Google Coding Style的时候,往往需要 IDE 插件的支持,流行的 IDE 都会有支持,如
Microsoft Visual Studio,
Jetbrains IDEA,
Android Studio等。那么这里有个问题,开源的项目是否要依赖 IDE 呢? 这个问题没有绝对的答案,我通常是不关心团队程成员使用什么工具编码的,这是每个人自己的喜好问题,不能够强迫。
不依赖 IDE 的选择
通常我会选择
editorconfig和
clang-format共存的方式来做限定。
editorconfig用来限定文件编码,缩进方式等,而
clang-format用来格式化代码。
Bazel skylark 自动格式化
skylark是
bazel构建系统下的类
python脚本语言,用来提供给开发者扩展自己的规则,遗憾的是
clang-format并不支持。但是官方提供了工具: buildtools
这个工具需要根据自己的平台自行下载,之前我都是下载到本地,配置好环境变量使用 。发现这样很不便利,我仍然需要在项目的开发者规范中去书写如何使用这些工具去格式化
skylark文件,想要更懒一些,所以就做了这么一件事情。 给
buildtools扩展了一套
bazel rules, 可以按照依赖的方式自动下载并集成到项目中,不再需要开发者去配置环境,这样就简单多了。
buildtools
这个项目和官方的项目名称一致,因为只是用脚本做了一层 wrapper. 使用方式很简单。如同
README中写到的一样:
in your WORKSPACE: load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") git_repository( name = "com_deepinthink_buildtools", remote = "https://github.com/deepinthink/buildtools.git", commit = "" # latest commit ) load("@com_deepinthink_buildtools//bazel:repositories.bzl", "buildtools_repositories") buildtools_repositories() using Makefile: fmt: fmt-bazel fmt-bazel: $(BAZEL) run @com_deepinthink_buildtools//:buildifier `pwd`/WORKSPACE $(BAZEL) run @com_deepinthink_buildtools//:buildifier `pwd`/project_module/BUILD
可以结合之前的文章中说到的 Makefile 使用方式来指定格式化代码的使用方式。 很简单只需要 :
make fmt
相关文章推荐
- Linux系统管理:文件系统的挂载与自动格式化脚本
- Oralce SQLPlus 以及shell脚本中spool输出到文件时的格式化输出
- 全面解析Unity3D自动生成的脚本工程文件
- Eclipse 保存文件时自动格式化代码
- MyEclipse保存文件时 自动格式化代码! 不包括文档注释
- Linux Shell 脚本自动创建文件并修改其权限
- Linux 终端 Git 分支提示和自动补全相关脚本文件
- 自动同步服务器vm文件的shell脚本
- windows下mysql自动备份恢复脚本文件
- 全面解析Unity3D自动生成的脚本工程文件
- Eclipse保存文件时自动格式化代码
- Eclipse保存Java文件自动格式化代码
- [Perl]FTP自动上传文件的脚本以及配置文件
- Oralce SQLPlus 以及shell脚本中spool输出到文件时的格式化输出
- 多linux服务器之间实现文件自动复制(脚本)
- 局域网设置自动配置脚本文件的写法与用途
- 自动复制指定文件到指定目录中的NANT脚本
- 通过SHELL脚本实现SFTP文件自动上传与下载
- vim修改时自动备份配置文件小脚本
- 强悍!winrar妙用-将bat脚本打包成exe可执行文件并实现自动执行