The problem of inconsistence style in Doris code is too big, it's hard to minimize modification when reformatting code. So here, our aim is to make the style rules, tune the config in .clang-format. Note: I choose clang-format-8.0+ to support richer sytle options.
78 lines
2.6 KiB
Markdown
78 lines
2.6 KiB
Markdown
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
-->
|
|
|
|
# Format Code
|
|
To automatically format the code, clang-format is a good choice.
|
|
|
|
## Code Style
|
|
Doris Code Style is based on Google's, makes a few changes. The customized .clang-format
|
|
file is in the root dir of Doris.
|
|
Now, .clang-format file only works on clang-format-8.0.1+.
|
|
|
|
## Preparing
|
|
You should install clang-format, or you can use clang-format plugins which support by IDEs or Editors.
|
|
|
|
### Install clang-format
|
|
Ubuntu: `apt-get install clang-format`
|
|
|
|
The current release is 10.0, you can specify old version, e.g.
|
|
|
|
`apt-get install clang-format-9`
|
|
|
|
Centos 7:
|
|
|
|
The version of clang-format installed by yum is too old. Compiling clang from source
|
|
is recommended.
|
|
|
|
### Clang-format plugins
|
|
Clion IDE supports the plugin "ClangFormat", you can search in `File->Setting->Plugins`
|
|
and download it.
|
|
But the version is not match with clang-format. Judging from the options supported,
|
|
the version is lower than clang-format-9.0.
|
|
|
|
## Usage
|
|
|
|
### CMD
|
|
`clang-format --style=file -i $File$`
|
|
|
|
When using `-style=file`, clang-format for each input file will try to find the
|
|
.clang-format file located in the closest parent directory of the input file.
|
|
When the standard input is used, the search is started from the current directory.
|
|
|
|
Note: filter out the files which should not be formatted, when batch clang-formating
|
|
files.
|
|
|
|
A example of how to filter \*.h/\*.cpp and exclude some dirs:
|
|
|
|
`find . -type f -not \( -wholename ./env/* \) -regextype posix-egrep -regex
|
|
".*\.(cpp|h)" | xargs clang-format -i -style=file`
|
|
|
|
### Using clang-format in IDEs or Editors
|
|
#### Clion
|
|
If using the plugin 'ClangFormat' in Clion, choose `Reformat Code` or press the keyboard
|
|
shortcut.
|
|
#### VS Code
|
|
VS Code needs install the extension 'Clang-Format', and specify the executable path of
|
|
clang-format in settings.
|
|
|
|
```
|
|
"clang-format.executable": "$clang-format path$",
|
|
"clang-format.style": "file"
|
|
```
|
|
Then, choose `Format Document`. |