首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >clang-格式能告诉我是否需要修改格式吗?

clang-格式能告诉我是否需要修改格式吗?
EN

Stack Overflow用户
提问于 2014-04-04 15:13:45
回答 9查看 39.3K关注 0票数 92

如果文件符合指定格式,您是否可以以clang-format的模式运行它报告的方式?一种模拟运行模式,在这种模式中,它报告是否需要更改,但不进行更改。理想情况下,如果文件需要更改,我希望clang格式只返回一个非零退出代码。或者,更理想的情况是,非零退出代码和需要对标准输出进行更改的文件列表。

我试图保持这个问题的一般性,以便更多的人能够回答,但我要做的是编写一个git预提交钩子,它将拒绝任何与预期的..clang格式不匹配的提交。在索引中的文件列表上运行clang格式很容易。但是很难知道clang格式是否真的改变了什么。

我有一个基于-output-replacements-xml的潜在解决方案(我将把它作为一个答案发布),但这是一次黑客攻击,我觉得这应该更加简单。欢迎评论/建议、编辑、不同的答案/方法。

EN

Stack Overflow用户

发布于 2017-08-29 21:41:57

在受到戴维·奥格伦的职位的启发后,我制作了一个pre-commit钩子,它能够处理阶段性的更改。这将确保pre-commit钩子能够在实际构成提交内容的代码上工作,并且不会被没有被分阶段的clang-format运行所愚弄。

代码语言:javascript
运行
复制
#!/bin/bash

files=()
for file in `git diff --cached --name-only --diff-filter=ACMRT | grep -E "\.(cpp|hpp)$"`; do
  if ! cmp -s <(git show :${file}) <(git show :${file}|clang-format); then
    files+=("${file}")
  fi
done

if [ -n "${files}" ]; then
echo Format error within the following files:
printf "%s\n" "${files[@]}"
exit 1
fi
票数 1
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22866609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档