### RuleChecker编码规范全文知识点详解 #### 一、前言 本文档全面介绍了Logiscope——Rulechecker中所涵盖的所有编码规范。对于每一条规范,本文档提供了详细的说明,包括其名称、具体的内容描述、可配置参数(适用于可自定义的规范)、遵循规范的好处以及示例。 #### 二、Rulechecker规则集概述 Rulechecker规则集主要分为两大类别:基本规则集和Scott Meyers规则集。我们将详细介绍基本规则集中的各项规则。 #### 三、基本规则集详解 ##### 2.1.1 ansi函数的声明和定义要遵守ANSI规定的格式 - **规则描述**:函数声明和定义时,需遵循ANSI规定的格式。具体要求包括: - 使用`name`参数时,为函数参数列表中的每个参数指定数据类型和名称。 - 使用`void`参数时,禁止参数列表为空。 - **参数**:可选字符串包括`"name"`和`"void"`。 - **理由**:遵循这一规则有助于提高代码的可读性和可移植性。 - **示例**: - 错误示例: ```c f(a, b) int a; char* b {} ``` - 正确示例: ```c f(int a, char* b) {} f(int, char*); f(void); ``` ##### 2.1.2 asscal 在函数调用语句中不要使用赋值操作符 - **规则描述**:禁止在函数调用语句的参数列表中使用赋值操作符(如`=`, `+=`, `-=`等)。 - **理由**:使用赋值操作符可能导致赋值顺序的不确定性,从而导致错误。 - **示例**: - 错误示例: ```c void fun1(int a); void fun2(int b) { fun1(++b); } ``` ##### 2.1.3 asscon 不要在控制语句的条件表达式中使用赋值操作符 - **规则描述**:禁止在if、while、for或switch语句的条件表达式中使用赋值操作符。 - **理由**:避免因使用赋值操作符而导致的逻辑不清或错误。 - **示例**: - 错误示例: ```c if (x -= dx) { for (i = j = n; --i > 0; j--) { ... } ``` - 正确示例: ```c x -= dx; if (x) { for (i = j = n; i > 0; i--, j--) { ... } ``` ##### 2.1.4 assexp 赋值表达式中的规定 - **规则描述**:在一个赋值表达式中,一个左值只能被赋值一次,并且在一个多重赋值表达式中,一个左值只能出现一次。 - **理由**:避免因赋值顺序不明导致的问题。 - **示例**: - 错误示例: ```c i = t[i]++; a = b = c + a; i = t[i] = 15; ``` ##### 2.1.5 blockdecl 在语句块的头部定义变量 - **规则描述**:要求变量的定义应位于使用该变量的语句块的开头。 - **理由**:提高代码的可读性。 - **疑义**:此规则在C++中可能并不总是适用。延迟变量的定义有时能提高程序效率并增强清晰度。 ##### 2.1.6 boolean 使用正确格式的布尔表达式 - **规则描述**:对于if、while、for等控制语句的布尔表达式,使用正确的格式。 - **理由**:使得代码更易于理解。 - **示例**: - 错误示例: ```c while (1) { if (test) { for (i = 1; function_call(i); i++) { ... } ``` - 正确示例: ```c AlwaysTrue = true; while (AlwaysTrue == true) { if (test == true) { for (i = 1; function_call(i) == true; i++) { ... } } } ##### 2.1.7 brkcont 程序中禁用break、continue - **规则描述**:禁止在for、do、while语句中使用`break`和`continue`(但允许在switch语句中使用`break`)。 - **理由**:与`goto`语句类似,使用`break`和`continue`会破坏代码的结构化流程,降低可读性。 ##### 2.1.8 classuse 对未知类成员的使用 - **规则描述**:禁止使用形如`u.v.a`、`u.v.f()`、`u.g().a`、`u.g().f()`等表达式,也不允许使用类似形式的指针操作符`->`。 - **理由**:防止类对象通过多级的`.`或`->`操作符访问未知的成员函数或数据成员,确保类之间的接口清晰明了。 - **示例**: - 错误示例: ```c myWindow.itsButton.push(); ``` 通过遵循这些编码规范,开发人员能够编写出更加清晰、可靠且易于维护的代码。此外,这些规则还能帮助团队保持一致的编码风格,减少潜在的错误和问题。
- 阿扎西2013-03-08最近做代码静态检查,正好用得着
- betacoding2014-08-25内容有些差强人意,分数也太高了!性价比太低!
- fafadede2013-09-18内容和想的虽然不太一致,但可勉强作为资料参考。
- 粉丝: 1
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于BP神经网络的电力负荷预测-基于BP神经网络的短期电力负荷预测源码
- 大学生HTML5期末作业 html+css网页制作 新闻 自定义新闻主题2个页面 Web前端网页制作 html5+css3+js
- 2025python程序设计基础课程期末的作业-课程评分系统
- 基于matlab的指纹识别系统(源码)高分项目
- jdk-17.0.13-linux-x64-bin.rpm 免费
- SAE J1979协议合集,包含J1979DA-201702英文版.pdf、J1979DA-201702查询表.xlsx、SAE J1979-2007中英文 仅供参考
- 基于bp神经网络预测的电力负荷 原代码(高分项目)
- 基于Java的西部自驾游管理系统作业西部自驾游管理系统作业(源码+sql文件)
- 上市公司企业数字技术赋能数据及企业数字赋能数据集(2001-2023年).txt
- matlab指纹识别系统完整源代码(高分大作业项目)
- 机顶盒华为EC6110-m固件ZxRom-hc-s905l3-dbzm-N1.5
- 新质生产力:以AI科技助力智能健康管理
- 温度,湿度,降雨量,风速,用电量数据集.zip
- 嵌入式项目-电子日历C
- 基于yolov5的医学影像肺结节检测项目源码+文档说明(高分项目)
- 第10次《线性代数》综合练习题答案.pdf