您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: