cstyle(1)
名称
cstyle — 检查 C 源文件中存在的常见风格错误
概述
cstyle [-chpvCP] [文件]…说明
cstyle 将检查 C 源文件(*.c 和 *.h)中的常见风格错误。它按文档所述的 C 风格规范进行检查:cstyle 文档。请注意,该文档中有许多内容都 无法 自动检查;若仅仅因为你的代码通过了 cstyle 检查,那不意味着你遵循了 Sun 的 C 风格。代码风格责任自负。
选项
-c
-c检查函数内部续行的缩进。Sun 的 C 风格规定,所有语句必须缩进到合适的制表位,且其后的续行必须从起始行 精确 缩进四个空格。此选项将启用一系列检查,仅用于发现函数内部的续行问题。检查存在一些限制,详见下文续行检查。
-p
-p执行一些更严格的检查。包括 ANSI 的 #else 和 #endif 规则,并尝试检测类型转换后的空格。作为回写检查(putback checks)的一部分使用。
-v
-v详细输出;包括出错行的文本。对于 -c 选项,还会显示当前续行块中的第一条语句。
-P
-P检查是否使用了非 POSIX 类型。过去如 u_int 和 u_long 类型曾被使用,但现在已被 POSIX 类型 uint_t、ulong_t 等取代。本选项用于检测那些弃用类型的使用,作为回写检查(putback check)的一部分。
-g
-g同时输出 GitHub Action 风格的 ::error 信息。
环境
CI
如果进行了设置且设置本身非空,相当于使用 -g 选项。
续行检查
续行检查器是一个相对简单的状态机,它能了解 C 语言的布局规则,并能跨多行匹配括号等结构。但它存在一些限制:
会导致括号不匹配的预处理宏(preprocessor macros)会干扰该行的检查。要修复此问题,需要确保每个 #if 分支的括号都是对称的。
某些 cpp(1) 宏在其后不需要 ;。此类宏 必须 全部为大写字母(ALL_CAPS);如果包含小写字母,会导致输出错误。
通常会在下次出现 ;、{ 或 } 时,自动修正错误的输出。
有些续行错误信息需要额外说明:
多条语句跨多行
如果一条多行的语句没有在语句边界处断开,将触发此错误。例如:
会触发错误。
正确写法应为:
if/for/while 空语句未独占一行
为了可读性,if、for 和 while 语句的空语句应独占一行。例如:
会触发错误。
正确写法应为:
2022 年 4 月 4 日 Debian
最后更新于