标签: clang-format

clang格式可以破坏我的代码吗?

作为clang-format仅重新格式化代码的工具,这种格式化是否有可能破坏工作代码或至少改变它的工作方式?是否存在某种合同,它将/不能改变代码的工作方式?

我们有很多代码需要格式化clang-format.这意味着,许多代码行都会改变.不必审查由于a而仅更改的每一行代码clang-format都将是此过程的一个大的简化.

我会说这clang-format不会改变代码的工作方式.另一方面,如果可以保证,我不是百分百肯定.

c clang-format

27
推荐指数
2
解决办法
6684
查看次数

clang-format:如果params不合适总是打破?

我无法弄清楚是否可以将clang-format配置为在参数不适合时始终中断,即:

// Try this first:
SomeCall(aaa, bbb, ccc);

// If doesn't fit, try this:
SomeCall(
     aaa, bbb, ccc);

// If still doesn't fit, do NOT try this:
SomeCall(aaa, bbb,
         ccc);

// and NOT this:
SomeCall(aaa,
         bbb,
         ccc);

// but immediately do this:
SomeCall(
     aaa,
     bbb,
     ccc);
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经得出结论,使用clang-format 3.4不可能做到这一点.这是对的吗?

clang clang-format

25
推荐指数
2
解决办法
2001
查看次数

我怎样才能只应用一个clang格式的动作?

我想使用clang-format来对齐我的评论,但没有别的.

选项是: AlignTrailingComments (bool).

但是当我运行以下内容时:

clang-format-3.6 -i -style='{AlignTrailingComments: true}' <file>
Run Code Online (Sandbox Code Playgroud)

它执行各种其他格式化选项,我想在未指定时具有默认值.

如何在代码库上只执行一个clang格式化规则?

拥有所有这些默认值后,很难看到单个格式选项对代码的完整影响.我必须解析所有这些其他更改的差异,并确定它是否是我指定实际执行的选项.


我注意到有一个DisableFormat选项,但无论我如何使用它,它都会阻止任何格式化.

clang-format-3.6 -i -style='{AlignTrailingComments: true, DisableFormat: true}'

clang-format-3.6 -i -style='{DisableFormat: true, AlignTrailingComments: true}'
Run Code Online (Sandbox Code Playgroud)

两者都导致clang-format不能在任何地方生成任何代码.

c++ code-formatting clang-format

25
推荐指数
2
解决办法
1108
查看次数

如何使用clang-format自动缩进4个空格的C++类?

我在项目的根目录中获得了下一个.clang格式的文件:

---
AlignTrailingComments: true
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
BreakBeforeBinaryOperators: false
IndentWidth: 4
SortIncludes: false
NamespaceIndentation: All
...
Run Code Online (Sandbox Code Playgroud)

当我在我的c ++标题上运行clang-format时出现问题,类会自动缩进,如下所示:

在此输入图像描述

如您所见,标签public和private仅缩进2个空格.但我想要实现的是下面的输出(缩进是手动调整):

在此输入图像描述

这样,代码崩溃变得非常愉快.

我怎么能调整我的.clang格式才能达到这个效果?如果不可能,你将如何修补clang格式的源代码来实现这种期望的行为?

编辑:

我尝试过使用AccessModifierOffset失败,我使用了以下值{-2,0,2,4}:

在此输入图像描述

如您所见,公共块内的语句将不会正确缩进.

EDIT2:

我已经尝试了@Henrique Jung解决方案,这绝对不是我要求的,如果使用这种组合,结果将是这样的:

在此输入图像描述

正如您所看到的,函数内部缩进了8个空格而不是4个,这并不好.

EDIT3:

几个月前我给了赏金,所以我要再试一次,因为这个肯定很有趣.如果我对俚语格式的源代码有足够的了解,我会试一试,不幸的是我没有.

c++ indentation auto-indent clang-format

24
推荐指数
3
解决办法
5633
查看次数

如何使用clang格式文件提供Visual Studio Clang-Format插件?

所以我下载,安装并插入了clang格式化插件的路径.我也测试了它,它适用于谷歌(Mozilla等)开箱即用的格式化选项,但我无法使用我的.clang格式文件.(我把我的文件放到与我的源文件相同的文件夹中,将其编码改为UTF-8,也尝试将其放入clang安装文件夹,将文件添加到项目中,将其内容写入其中'{key:value}'但格式化不会发生).那么如何将格式文件提供给chrome格式的扩展名呢?

我的文件内容:

 { BasedOnStyle: "LLVM",    IndentWidth: 4 }
Run Code Online (Sandbox Code Playgroud)

我的文件名:nm.clang-format

c++ clang visual-studio clang-format

23
推荐指数
2
解决办法
1万
查看次数

使用clang格式缩进预处理程序指令

我正在开发一个c ++项目,我正在使用它#pragma omp.我使用精彩的clang格式来整理,但它总是删除所有预处理器指令的缩进.有没有办法改变这种行为?或者是否有其他格式化工具更值得推荐?或者我应该避免使用这些工具?

c++ code-cleanup clang-format

23
推荐指数
4
解决办法
3745
查看次数

clang-format:设置控制C++属性

通过Clang-Format样式选项进行搜索,我似乎无法找到控制C++属性放置行为的方法.

举一个例子,取这两个声明,第一个不会溢出列限制,第二个声明:

template <typename TChar>
[[gnu::always_inline]]
static ptr<TChar> within_limit(ptr<TChar> first, ptr<TChar> last);

template <typename TChar, typename FApply, typename... FApplyRest>
[[gnu::always_inline]]
static ptr<TChar> overflow(ptr<TChar> first, ptr<TChar> last, const FApply& apply, const FApplyRest&... apply_rest);
Run Code Online (Sandbox Code Playgroud)

无论我如何调整我.clang-format,输出都是这个的一些变体:

[[gnu::always_inline]] static ptr<TChar> within_limit(ptr<TChar> first, ptr<TChar> last);

[[gnu::always_inline]] static ptr<TChar>
overflow(ptr<TChar> first, ptr<TChar> last, const FApply& apply, const FApplyRest&... apply_rest);
Run Code Online (Sandbox Code Playgroud)

将属性与类型放在同一行是相当难以理解的(对我而言),所以我不希望clang-format这样做.使用__attribute__((always_inline))展品的行为相同.在单个列表中指定多个属性([[noreturn, gnu::cold]])会导致重新格式化([[ noreturn, gnu::cold ]]由于我不清楚的原因).格式化程序至少对属性有一些基本的了解.

SO:有没有办法让clang-format属性放在自己的行上(C++相当于BreakAfterJavaFieldAnnotations)?


尝试过的变通方法

使用// clang-format …

clang-format

22
推荐指数
1
解决办法
760
查看次数

clang-format能为我调整一块#defines吗?

我有一个包含这样的行的源文件;

#define ARC_V2_LP_START         0x002
#define ARC_V2_LP_END           0x003
#define ARC_V2_STATUS32         0x00a
Run Code Online (Sandbox Code Playgroud)

所有的值很好地对齐.不幸的是,clang-format会这样做;

#define ARC_V2_LP_START 0x002
#define ARC_V2_LP_END 0x003
#define ARC_V2_STATUS32 0x00a
Run Code Online (Sandbox Code Playgroud)

我找到了AlignConsecutiveDeclarations和AlignConsecutiveAssignments选项,但没有任何可以对齐连续的#defines.是否有可能做到这一点?

c c++ clang-format

21
推荐指数
1
解决办法
2218
查看次数

如何在ubuntu中安装clang-format

我试图使用clang-tools特别是clang-format在vim中进行自动代码格式化,但我找不到这个工具使用apt-get搜索.

以前是否有人遇到过此问题,您有什么建议吗谢谢

vim code-formatting clang clang-format

20
推荐指数
5
解决办法
4万
查看次数

什么clang-format选项控制方法调用参数的格式?

我知道人们对如何在Objective-C中格式化方法调用有不同的看法,即

[self presentViewController:scanViewController
                   animated:YES
                 completion:nil];
Run Code Online (Sandbox Code Playgroud)

VS

[self presentViewController:scanViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

我使用.clang格式文件中的哪些选项来控制这种缩进?(如果我不想要它,冒号排队等)

还有,这只是我还是这个格式无知的块?注意成功块的if语句不是缩进的,NSLog函数也不是故障块.

[self.client getPath:path
    parameters:parameters
    success:^(AFHTTPRequestOperation *operation, id responseObject) {
    if ([from_id isEqualToString:self.from_id]) {
        self.image.image = [UIImage imageWithData:responseObject];
    }
    }
    failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(error.description);
    }];
Run Code Online (Sandbox Code Playgroud)

formatting objective-c clang clang-format

18
推荐指数
1
解决办法
3042
查看次数