在嵌入式项目开发中,代码检查通常会伴随整个开发周期进行。对于采用C/C++语言的项目,开发人员经常需要根据MISRA规范检查代码是否存在不符合要求的写法。使用QAC执行MISRA检查时,除了关注检测出的违规项,还需要确认规则配置和分析环境是否符合项目实际情况。有些项目在首次检查时结果正常,但调整规则或者更换代码版本后,报告内容可能出现变化,这时就需要结合QAC配置和检查结果进一步分析原因。
一、QAC怎么进行MISRA规则检查
QAC执行MISRA检查前,需要先建立项目分析环境,并加载对应规则配置。整个过程主要包括项目准备、规则设置以及结果查看。
1、配置项目分析环境
MISRA检查依赖项目源码和编译信息,开始检查前需要先完成基础环境配置。
①、打开【QAC】。
②、进入【项目管理】。
③、创建或选择目标项目。
④、打开【项目设置】。
⑤、配置源码路径。
⑥、确认编译参数。
项目实际使用的编译环境会影响代码解析结果,配置时需要保持和开发环境对应。
2、加载MISRA检查规则
项目环境准备完成后,需要启用对应MISRA规则。
①、进入【规则配置】。
②、查看当前规则集。
③、选择【MISRA规则】。
④、确认规则版本。
⑤、启用检查项。
⑥、保存规则设置。
如果项目采用特定版本的MISRA规范,需要确认加载的规则版本与项目要求一致。
3、调整规则检查选项
部分项目会根据开发要求调整检查范围。
①、打开【分析配置】。
②、查看检查参数。
③、设置规则范围。
④、调整告警级别。
⑤、保存配置。
规则参数变化后,需要重新分析代码才能查看新的检查结果。
4、执行MISRA代码分析
完成配置后,可以开始执行静态检查。
①、打开【分析任务】。
②、选择目标项目。
③、启动代码分析。
④、等待检查完成。
⑤、打开分析结果。
首次运行时,可以重点确认QAC是否正确读取项目代码和规则配置。
5、查看MISRA违规结果
分析完成后,需要查看具体违规内容。
①、进入【分析结果】。
②、打开【问题列表】。
③、筛选MISRA问题。
④、查看规则编号。
⑤、定位代码位置。
⑥、记录违规信息。
通过规则编号可以快速对应具体规范要求。
二、QAC MISRA检查结果不符合预期如何分析
MISRA检查结果异常时,需要先判断具体表现,再选择对应排查方向。不同问题可能来自规则设置,也可能来自分析环境变化。
1、检查规则是否正确加载
如果部分MISRA规则没有产生结果,需要先确认规则状态。
①、打开【规则配置】。
②、查看MISRA规则列表。
③、确认规则启用状态。
④、检查项目关联规则。
⑤、重新执行分析。
如果项目使用的规则集没有更新,新的配置不会影响当前检查。
2、检查编译环境参数
检查结果和预期差异较大时,需要查看代码解析条件。
①、打开【项目设置】。
②、检查编译参数。
③、确认宏定义。
④、查看头文件路径。
⑤、重新分析项目。
QAC需要根据项目实际编译条件理解源码,环境差异可能导致不同分析结果。
3、分析异常违规项
出现大量违规或者单个规则异常时,需要查看具体代码情况。
①、打开【问题详情】。
②、查看MISRA规则编号。
③、阅读规则说明。
④、检查对应代码。
⑤、判断问题原因。
部分违规项需要结合业务逻辑确认,不能只根据提示信息修改代码。
4、确认分析代码版本
代码版本不同,也可能导致检查结果变化。
①、打开【项目记录】。
②、查看分析时间。
③、确认源码版本。
④、比较代码变化。
⑤、重新执行检查。
分析不同版本代码时,需要保证比较对象一致。
5、查看分析日志
当规则和环境配置正常,但结果仍异常时,可以查看日志。
①、打开【分析日志】。
②、检查规则加载信息。
③、查看异常提示。
④、定位分析过程。
⑤、调整相关配置。
日志可以帮助确认问题发生在代码解析、规则执行还是结果生成阶段。
三、QAC MISRA检查结果调整后如何维护
MISRA检查通常会随着项目开发持续执行,完成规则调整或者代码修改后,还需要整理检查记录。这样可以方便后续查看问题变化,避免不同阶段的分析结果混淆。
1、整理MISRA违规记录
①、打开【问题列表】。
②、筛选待处理问题。
③、记录规则编号。
④、保存代码位置。
⑤、更新处理状态。
2、复查代码修改效果
①、进入【分析任务】。
②、重新执行检查。
③、查看最新结果。
④、比较问题变化。
⑤、确认处理情况。
3、保存检查配置
①、打开【项目设置】。
②、查看规则配置。
③、记录环境参数。
④、保存配置内容。
⑤、整理项目资料。
总结
QAC进行MISRA规则检查时,最终结果会受到规则配置、项目环境以及源码状态等因素影响。遇到检查结果不符合预期时,需要先确认规则是否正确加载,再结合分析环境和具体代码进行判断。完成调整后,保留MISRA规则配置、分析记录以及问题处理信息,可以方便后续复查项目质量情况。规范维护检查流程,有助于保持代码分析结果的一致性。