blob: d81b52fcc31f3b12e829b5ac3b3de70abdd18fb2 [file] [log] [blame] [view] [edit]
# Coding Style
This document describes the coding style used by this project.
All of the formatters can be invoked by the `pw` utility script in the root of
the project:
```
$ ./pw format
```
## Rust
This project follows the standard [Rust Style
Guide](https://doc.rust-lang.org/style-guide/) for Rust code. Formatting is
done with `rustfmt` using the
[`rustfmt.toml`](https://github.com/pigweed-project/pigweed/blob/main/rustfmt.toml)
from the upstream [Pigweed](https://github.com/pigweed-project/pigweed/) repository.
## Python
This project follows [PEP8](https://peps.python.org/pep-0008/) for Python code.
Formatting is done with the `black` formatter.
## Starlark (bazel build system)
This project follows the standard [bzl style
guide](https://bazel.build/rules/bzl-style) for Starlark code.
Formatting is done with the `buildifier` tool.
## C / C++
This project follows the [Google C++ Style Guide] for C and C++ code, with the
following exceptions:
- Indent is 4 spaces instead of 2.
- Function names should use `snake_case` instead of `PascalCase`.
- In pointer declarations, the asterisk is attached to the variable name (`int
*foo`) instead of the type name (`int* foo`).
Formatting is done with `clang-format`.