自动提交时自动格式化 Rust(以及 C++)代码

Autoformat Rust (and also C++) code on commit automatically

我想在使用 rustfmt 提交时自动格式化代码,就像我之前为 clang-format -i 所做的那样。怎么做?

可以通过以下方式使用 git pre-commit 挂钩来完成:

  1. 将文件 pre-commit 添加到您的存储库中的文件夹 .githooks,其中包含以下文本:
#!/bin/bash

exe=$(which rustfmt)

if [ -n "$exe" ]
then
    # field separator to the new line
    IFS=$'\n'

    for line in $(git status -s)
    do
        # if added or modified
        if [[ $line == A* || $line == M* ]]
        then
            # check file extension
            if [[ $line == *.rs ]]
            then
                # format file
                rustfmt $(pwd)/${line:3}
                # add changes
                git add $(pwd)/${line:3}
            fi
        fi
    done

else
    echo "rustfmt was not found"
fi
  1. 运行 在你的 repo 文件夹中:
chmod +x .githooks/pre-commit
git config core.hooksPath .githooks

要使其适用于 clang-format,您需要将 rustfmt 替换为 clang-format -i,并在检查文件扩展名 (cpp\h\hpp\etc) 时进行相应的修改。