gpt4 book ai didi

c++ - QtCreator : unify QtCreatorCodeStyle with clang-format

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:08 25 4
gpt4 key购买 nike

我想知道是否有简单的方法可以将qt creator codestyle(xml文件)转换成 clang-format 的文件?

我的 C++ 代码有以下配置,是从 qtcreator 生成的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorCodeStyle>
<!-- Written by QtCreator 4.2.1, 2017-03-09T12:29:05. -->
<qtcreator>
<data>
<variable>CodeStyleData</variable>
<valuemap type="QVariantMap">
<value type="bool" key="AlignAssignments">false</value>
<value type="bool" key="AutoSpacesForTabs">false</value>
<value type="bool" key="BindStarToIdentifier">false</value>
<value type="bool" key="BindStarToLeftSpecifier">true</value>
<value type="bool" key="BindStarToRightSpecifier">false</value>
<value type="bool" key="BindStarToTypeName">true</value>
<value type="bool" key="ExtraPaddingForConditionsIfConfusingAlign">true</value>
<value type="bool" key="IndentAccessSpecifiers">false</value>
<value type="bool" key="IndentBlockBody">true</value>
<value type="bool" key="IndentBlockBraces">false</value>
<value type="bool" key="IndentBlocksRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentClassBraces">false</value>
<value type="bool" key="IndentControlFlowRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentDeclarationsRelativeToAccessSpecifiers">true</value>
<value type="bool" key="IndentEnumBraces">false</value>
<value type="bool" key="IndentFunctionBody">true</value>
<value type="bool" key="IndentFunctionBraces">false</value>
<value type="bool" key="IndentNamespaceBody">false</value>
<value type="bool" key="IndentNamespaceBraces">false</value>
<value type="int" key="IndentSize">2</value>
<value type="bool" key="IndentStatementsRelativeToSwitchLabels">true</value>
<value type="bool" key="IndentSwitchLabels">true</value>
<value type="int" key="PaddingMode">2</value>
<value type="bool" key="ShortGetterName">true</value>
<value type="bool" key="SpacesForTabs">false</value>
<value type="int" key="TabSize">2</value>
</valuemap>
</data>
<data>
<variable>DisplayName</variable>
<value type="QString">Google</value>
</data>
</qtcreator>

但我找不到大多数这些变量的等效 clang 格式。我在美化插件中的 clang-format 文件相似但不完全相同,这导致我的 git diff 每次都乱七八糟。

最佳答案

我检查了 QtCreator 设置并提出了以下一般映射。这些设置的排列顺序与它们在 Qt Creator 4.10.2 代码样式对话框中的显示顺序相同,这有助于识别有时神秘的名称。

标记为 N/A 的设置是 clang-format 似乎不支持的东西。 (根据文档 clang-format 有意只支持一小部分固定样式,而不是通用格式化程序。)

我没有尝试匹配特定的设置值或更复杂的组合,但这个列表应该作为一个起点来弄清楚。

QtCreator                                     Clang-format
--------- ------------

[GENERAL]
SpacesForTabs UseTab
TabSize TabWidth
IndentSize IndentWidth
PaddingMode UseTab

[CONTENT]
IndentAccessSpecifiers AccessModifierOffset
IndentDeclarationsRelativeToAccessSpecifiers N/A
IndentFunctionBody N/A
IndentBlockBody N/A
IndentNamespaceBody NamespaceIndentation

[BRACES]
# Qt's implied style matches Clang BreakBeforeBraces=Allman
# Qt's IndentX options match Clang's BreakBeforeBraces=GNU
# to customize GNU style, see:
IndentClassBraces BraceWrapping:AfterClass:IndentBraces
IndentNamespaceBraces BraceWrapping:AfterNamespace:IndentBraces
IndentEnumBraces BraceWrapping:AfterEnum:IndentBraces
IndentFunctionBraces BraceWrapping:AfterFunction:IndentBraces
IndentBlockBraces N/A

[SWITCH]
IndentSwitchLabels IndentCaseLabels
IndentStatementsRelativeToSwitchLabels N/A
IndentBlocksRelativeToSwitchLabels N/A
IndentControlFlowRelativeToSwitchLabels N/A

[ALIGNMENT]
AlignAssignments AlignOperands
ExtraPaddingForConditionsIfConfusingAlign N/A

[POINTERS AND REFERENCES]
BindStarToIdentifier PointerAlignment
BindStarToTypeName PointerAlignment
BindStarToLeftSpecifier PointerAlignment
BindStarToRightSpecifier PointerAlignment

[?]
AutoSpacesForTabs N/A (editor setting)

关于c++ - QtCreator : unify QtCreatorCodeStyle with clang-format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42694593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com