如何做招生网站,网站建设redu,安徽建设工程信息网查询平台蔡庆树,wordpress留言板代码文章目录 0. 概述1. 安装 oclint2. oclint配置文件3. 脚本详解3.1 禁用的规则列表3.2 需要启用的规则代码风格代码复杂性命名规范性能安全性其他 4. 检测执行1. 使用 CMake 生成 compile_commands.json2. 运行 Oclint 0. 概述
OCLint是一个静态代码分析工具#xff0c;通过词… 文章目录 0. 概述1. 安装 oclint2. oclint配置文件3. 脚本详解3.1 禁用的规则列表3.2 需要启用的规则代码风格代码复杂性命名规范性能安全性其他 4. 检测执行1. 使用 CMake 生成 compile_commands.json2. 运行 Oclint 0. 概述
OCLint是一个静态代码分析工具通过词法分析和语法树生成来解析C、C和Objective-C代码。它应用预定义规则集进行语义分析和静态检查检测代码风格、复杂性、潜在错误、性能和安全问题。
1. 安装 oclint
下载 https://github.com/oclint/oclint/releases/download/v0.13.1/oclint-0.13.1-x86_64-linux-4.4.0-112-generic.tar.gz
设置环境变量后即可运行
2. oclint配置文件
---
# 禁用的规则列表
disable-rules:- LongLine- LongMethod- HighNPathComplexity- HighCyclomaticComplexity- DeepNestedBlock- HighNcssMethod- LongParameterList# 需要启用的规则
rules:# Code Style Rules- RedundantVoidArgument- UseBoolLiteral- UseEqualsDefault- UseNullptr- MissingOverride- ExplicitConstructor- CppStyleCasts- BracesAroundStatements- ClassNamingConvention- StructNamingConvention- TypedefNamingConvention- EnumNamingConvention- MacroParentheses- ForwardDeclarationNamespace- LongVariableName- ShortVariableName- SwitchStatementsShouldHaveDefault- UseContainerLiteral- UselessParentheses# Performance Optimization Rules- AvoidPrivateStaticMembers# Security Rules- CertDcl21Cpp# Potential Bugs- BoolPointerImplicitConversion- MisplacedWideningCast- NarrowingConversion- ReinterpretCast- UnconventionalAssignOperator- DeadCode- DeprecatedObjCImplementedProtocols- DuplicateMethodMatch- InvertedLogic- NilAssignedToNonPointer- RedundantConditionalOperator- RedundantIfStatement- RedundantNilCheck- ReturnFromFinallyBlock- UnreachableCode- UnusedMethodParameter- UnusedLocalVariable# Best Coding Practices- NonConstParameter- UndelegatedConstructor- MacroRepeatedSideEffects- ParameterReassignment- PreferEarlyExit- NestedBlockDepth- MagicNumber- MissingBreakInSwitchStatement- TooManyFields- TooManyMethods- TooManyParameters- UseEarlyExit# Miscellaneous- GotoStatement
3. 脚本详解
以下是对给定OCLint配置文件的解读
3.1 禁用的规则列表
这些规则被禁用是为了避免在代码分析过程中被检查到
LongLine - 禁用对代码行长度的检查。LongMethod - 禁用对方法长度的检查。HighNPathComplexity - 禁用对N路径复杂度的检查。HighCyclomaticComplexity - 禁用对圈复杂度的检查。DeepNestedBlock - 禁用对深层嵌套块的检查。HighNcssMethod - 禁用对方法的NCSS非注释源代码语句数量的检查。LongParameterList - 禁用对长参数列表的检查。
3.2 需要启用的规则
这些规则被启用是为了在代码分析过程中进行检查
代码风格
RedundantVoidArgument - 检查冗余的void参数。UseBoolLiteral - 强制使用布尔字面量true/false。UseEqualsDefault - 使用default指定默认构造函数。UseNullptr - 使用nullptr代替NULL。MissingOverride - 检查缺失的override关键字。ExplicitConstructor - 强制构造函数使用explicit关键字。CppStyleCasts - 使用C风格的类型转换。BracesAroundStatements - 强制在语句周围使用大括号。SwitchStatementsShouldHaveDefault - 检查switch语句中是否有default分支。UseContainerLiteral - 使用容器字面量。UseEarlyExit - 优先使用提前返回。
代码复杂性
NestedBlockDepth - 检查嵌套块的深度。LongVariableName - 检查变量名称是否过长。ShortVariableName - 检查变量名称是否过短。TooManyFields - 检查类中字段的数量是否过多。TooManyMethods - 检查类中方法的数量是否过多。TooManyParameters - 检查方法的参数数量是否过多。
命名规范
ClassNamingConvention - 检查类的命名规范。StructNamingConvention - 检查结构体的命名规范。TypedefNamingConvention - 检查typedef的命名规范。EnumNamingConvention - 检查枚举的命名规范。
性能
NonConstParameter - 检查非const参数。UndelegatedConstructor - 检查未委托的构造函数。AvoidPrivateStaticMembers - 避免私有静态成员。
安全性
CertDcl21Cpp - CERT C编程标准的规则。MacroParentheses - 检查宏定义中的括号。MacroRepeatedSideEffects - 检查宏定义中重复的副作用。ForwardDeclarationNamespace - 检查命名空间中的前向声明。BoolPointerImplicitConversion - 检查布尔指针的隐式转换。MisplacedWideningCast - 检查位置错误的扩宽类型转换。NarrowingConversion - 检查缩小类型转换。ReinterpretCast - 检查reinterpret_cast。UnconventionalAssignOperator - 检查非常规的赋值操作符。
其他
DeadCode - 检查死代码。DeprecatedObjCImplementedProtocols - 检查废弃的ObjC实现的协议。DuplicateMethodMatch - 检查重复的方法匹配。GotoStatement - 检查goto语句。InvertedLogic - 检查反向逻辑。MagicNumber - 检查魔术数字。MissingBreakInSwitchStatement - 检查switch语句中缺失的break。NilAssignedToNonPointer - 检查将nil赋值给非指针。ParameterReassignment - 检查参数重新赋值。RedundantConditionalOperator - 检查冗余的条件操作符。RedundantIfStatement - 检查冗余的if语句。RedundantNilCheck - 检查冗余的nil检查。ReturnFromFinallyBlock - 检查finally块中的返回。UnreachableCode - 检查无法到达的代码。UnusedMethodParameter - 检查未使用的方法参数。UnusedLocalVariable - 检查未使用的局部变量。UselessParentheses - 检查无用的括号。
4. 检测执行
1. 使用 CMake 生成 compile_commands.json
为了使用 Cppcheck 的 --project 选项你需要一个 compile_commands.json 文件。这个文件是一个编译数据库包含项目中所有源文件的编译信息。 如果你的项目使用 CMake 构建可以通过以下命令生成 compile_commands.json 文件
cd /path/to/your/project
cmake -DCMAKE_EXPORT_COMPILE_COMMANDSON .运行上述命令后会在项目的构建目录中生成一个 compile_commands.json 文件。
2. 运行 Oclint
.oclint配置文件放在代码工程根目录接着执行oclint-json-compilation-database -p . -- -extra-arg-stdc14 -report-type html -o oclint_report.html