Hexagon LLVM编译架构介绍(6)

Hexagon LLVM编译架构介绍(6)

3.4.7 诊断格式

LLVM 旨在默认生成好的诊断,特别是对于刚开始使用 LLVM 的新用户。 但是,不同的用户有不同的偏好,有时 LLVM 可能由另一个程序驱动,该程序需要诊断输出简单一致而不是用户友好。 对于这些情况,LLVM 提供了广泛的选项来控制它生成的诊断的输出格式。

参数描述
-fcaret-diagnostics / -fno-caret-diagnostics从诊断中的源代码打印源代码行和范围。控制 LLVM 在发出诊断时是否打印源行、源范围和插入符号。 默认设置已启用。 启用后,LLVM 将打印如下内容:在这里插入图片描述
-fcolor-diagnostics / -fno-color-diagnostics控制 LLVM 是否以彩色打印诊断信息。 当检测到支持颜色的终端时,将启用默认设置。 启用后,LLVM 使用颜色突出显示诊断的特定部分。 例如:在这里插入图片描述禁用时,LLVM 将只打印:在这里插入图片描述
-fdiagnostics-format=(clang|msvc|vi)更改诊断输出格式以更好地匹配 IDE 和命令行工具。 此选项控制诊断消息中打印的文件名、行号和列的输出格式。 默认设置是 clang 。 设置对输出格式的影响如下所示。在这里插入图片描述
-fdiagnostics-show-name / -fno-diagnostics-show-name启用诊断名称的显示。控制 LLVM 是否打印关联的名称。 默认设置已禁用。
-fdiagnostics-show-option / -fno-diagnostics-show-option在诊断行中启用 [-Woption] 信息。控制 LLVM 在输出警告诊断时是否打印关联的警告组选项名称(第 3.5.3 节)。 默认设置是禁用的。 例如,给定以下诊断输出:在这里插入图片描述在这种情况下,指定 -fno-diagnostics-show-option 可防止 LLVM 在诊断输出中打印 [ -Wextra-tokens ] 信息。 此信息指示从命令行或使用编译指示 GCC 诊断(第 3.5.5 节)启用或禁用诊断所需的选项。
-fdiagnostics-show-category=(none|id|name)在诊断行中启用打印类别信息。 此选项控制 LLVM 在发出诊断时是否打印与诊断相关的类别。 默认设置为 none 。 设置对输出格式的影响如下所示。在这里插入图片描述每个诊断可能有也可能没有相关的类别; 如果有,则在诊断行的诊断类别字段中列出(在 [] 中)。 此选项可用于按类别对诊断进行分组,因此它应该是一个高级类别:目标是获得几十个类别,而不是成百上千个类别。
-fdiagnostics-fixit-info / -fno-diagnostics-fixit-info在诊断输出中启用“FixIt”信息。 此选项控制 LLVM 是否打印有关如何修复其下特定诊断的信息(当它知道如何修复时)。 默认设置已启用。 例如,给定以下诊断输出:在这里插入图片描述在这种情况下,指定 -fno-diagnostics-fixit-info 将阻止 LLVM 在消息末尾打印“//”行。 此信息对于可能不了解问题所在的用户很有用; 然而,对于机器解析,它可能会令人困惑。
-fdiagnostics-print-source-range-info / -fno-diagnostics-print-source-range-info打印有关源范围的机器可解析信息。 此选项控制 LLVM 是否在文件/行/列号信息之后以机器可解析的格式打印有关源范围的信息。 默认设置是禁用的。 该信息是括号括起来的范围的简单序列,其中每个范围都列出了开始和结束行/列的位置。 例如,给定以下输出:在这里插入图片描述在这种情况下,{} 由 -fdiagnostics-print-source-range-info 生成。 打印的列号从行首开始计算字节数; 请注意您的源是否包含多字节字符。
-fdiagnostics-parseable-fixits以机器可解析的格式打印 Fix-Its。此选项使 LLVM 在诊断结束时以机器可解析的格式打印可用 Fix-Its。 以下示例说明了该格式:fix-it:"t.cpp":{7:25-7:29}:"Gamma" .在这种情况下,打印的范围是半开的,因此文件 t.cpp 的第 7 行从第 25 列到(但不包括)第 29 列的字符应替换为字符串 Gamma 。 范围或替换字符串可以为空(分别表示严格插入和严格擦除)。 文件名和插入字符串都转义反斜杠(如“\”)、制表符(如“\t”)、换行符(如“\n”)、双引号(如“\””)和不可打印的字符 (作为八进制“ \xxx ”)。打印的列号从行的开头开始计算字节数;请注意您的源是否包含多字节字符。
-fdiagnostics-show-template-tree模板类型差异打印文本树。 对于区分大型模板类型,此选项会导致 LLVM 将模板显示为缩进文本树,每行一个参数,并将任何差异标记为内联。 这与 -fno-elide-type 兼容。在这里插入图片描述
-fno-elide-type在模板类型打印中禁用省略。 模板类型打印的默认设置是尽可能多地省略模板参数,删除两种模板类型中相同的参数,只留下不同之处。 指定此选项会导致打印所有模板参数。 如果终端支持,突出显示仍将出现在不同的参数上。 此选项的效果如下所示。在这里插入图片描述
-fmessage-length=n / -fshow-column /-fno-show-column在诊断中打印列号。 控制 LLVM 是否打印诊断的列号。 默认设置已启用。 启用后,LLVM 将打印如下内容:在这里插入图片描述禁用时,LLVM 将打印“ test.c:28: warning… ”而没有列号。 打印的列号从行首开始计算字节数; 请注意您的源是否包含多字节字符。
-fshow-source-location / -fno-show-source-location在诊断中打印源文件/行/列信息。 控制 LLVM 是否打印诊断文件名、行号和列号。 默认设置已启用。 启用后,LLVM 将打印如下内容:在这里插入图片描述禁用时,LLVM 不会打印消息的“ test.c:28:8: ”部分。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值