我想知道是否有一种简单的方法可以将qt creator codestyle(xml文件)转换为clang格式文件?
我有从qtcreator生成的c ++代码的以下配置:
@Component({})
export class DummyComponent implements OnDestroy {
form: FormGroup;
subscription: Subscription; // from rxjs
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
firstName: [''],
lastName: ['']
});
this.subscription = this.form.valueChanges.subscribe(
x => console.log(x)
);
}
ngOnDestroy(): void {
this.subscription.unsubscribe();
}
}
但我找不到大多数变量的clang格式等价物。 我的美化插件中的clang格式文件类似但不完全相同,每次都会导致我的git差异混乱。
答案 0 :(得分:0)
您可以从已安装的格式中获取示例配置,例如llvm:
clang-format -style=llvm -dump-config > .clang-format
因此,您需要“值”元素的文本和键属性。 格式主要是。 :
使用python和lxml:
with open(xml_path) as xml_file:
xml_content = xml_file.read()
tree = etree.parse(xml_path)
elements = tree.findall("value")
fileBuffer =""
for e in elements:
filebuffer += e.attr["key"] + ": " + e.text + "\n"
未经测试
答案 1 :(得分:0)
我完成了 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)