Tired of spending half time of code review on marking code style issues?
Here we go - this allows to use clang-format
as a linter for
arcanist to enforce style over
your C/C++/Objective-C codebase.
It's not invasive (yet) and at the moment just suggests to autofix code.
What you want to get is to make this module to be available for
arcanist
. There are a couple of ways to achieve it depending on your
requirements.
Right now clang-format
should be installed beforehand. On OS X you
can do it through homebrew brew install clang-format
.
You also have to configure your style in .clang-format
(documentation)
Best way is to start from a predefined style by dumping an existing
style clang-format -style=LLVM -dump-config > .clang-format
and tune
parameters.
There is also a wonderful interactive builder available.
You can add this repository as a git submodule and in this case
.arcconfig
should look like:
{
"load": [
"path/to/submodule"
]
// ...
}
arcanist
can load modules from an absolute path. But there is one
more trick - it also searches for modules in a directory up one level
from itself.
It means that you can clone this repository to the same directory
where arcanist
and libphutil
are located. In the end it should
look like this:
> ls
arcanist
clang-format-linter
libphutil
In this case you .arcconfig
should look like
{
"load": [
"clang-format-linter"
]
// ...
}
Another approach is to clone clang-format-linter
to a fixed location
and use absolute path like:
cd ~/.dev-tools
git clone https://github.com/vhbit/clang-format-linter
{
"load": [
"~/.dev-tools/clang-format-linter"
]
// ...
}
Both ways of global installation are actually almost equally as in most cases you'd like to have a bootstrapping script for all tools.
Once installed, linter can be used and configured just as any other
arcanist linter
Here is a simplest .arclint
:
{
"linters": {
"clang-format": {
"type": "clang-format",
"include": "(^Source/.*\\.(m|h|mm)$)"
},
// ...
}
}