【问题标题】:Styling a C/C++ file on diffs在差异上设置 C/C++ 文件的样式
【发布时间】:2017-11-14 03:28:51
【问题描述】:

我需要仅对正在提交的 C/C++ 文件部分设置样式(因此其他行的责任是完整的)。有什么工具可以做到这一点吗?我知道我们可以设置整个文件的样式,并责备忽略样式更改(但我的团队不希望这样)。

以下是我用astyle 尝试过的一些事情:

  1. 我将 diff 写入一个新文件并设置样式并替换原始文件中的 diff 部分 - 为什么它不起作用?它没有真正的样式,因为它没有上下文,例如 if 语句缩进其余行等。

  2. 我设置了整个文件的样式并仅替换更改的部分。 - 为什么它不起作用?如果我尝试更改最大代码长度并且行被分解,那么差异行是不同的。

  3. 在原始文件和包含样式差异的文件之间进行 3 路合并怎么样?还是要试试这个。

可能有更简单的方法,我想念它:S

【问题讨论】:

  • 你是什么意思"style" git 文件历史将显示发生了什么变化以及谁提交了它?
  • 这真的是一个值得解决的问题吗?
  • @RichardCritten 编码指南,如缩进空格/制表符、k&r 样式等
  • @You 简短的回答是,你是对的......也许不是!谢谢。
  • git 不仅仅提交文件的更改部分。它每次都提交全部内容。它最终如何存储是另一回事。

标签: c++ git astyle


【解决方案1】:
  1. 您可以使用lint-diffs,一个python 脚本,运行clang-tidy 并让您的CI 工具或git 挂钩报告(不正确)样式和其他静态检查中的错误只有你的差异。这可以配置为使用任何 vcs 和多种语言。

  2. 你可以使用clang-format-diff.py,这是一个clang自带的python脚本。它采用一组统一的差异并将它们用于 clang-formats -lines 参数。一般来说,'-lines' 参数是您告诉 clang-format 哪些行可以更正的方式。

【讨论】:

    【解决方案2】:

    您可以使用 git hook 和 clang-format 来做到这一点。

    例如:https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/git-clang-format

    【讨论】:

    • 我不会关注那个链接(因为我的浏览器标记了它的证书)。通过谷歌,我确实找到了 声称 能够格式化统一差异的 clang-format 文档;但我有点怀疑这是否会解决 OP 关于已经尝试过的事情提出的问题,因为文档中的示例用法显示无法将上下文传达给 clang-format
    猜你喜欢
    • 2013-07-02
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多