没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:郑恭琳|2020-08-26 16:10:44.533|阅读 748 次
概述:PC-lint Plus提供对MISRA C++编码准则的支持。通过将对au-misra-cpp.lnt文件(随PC-lint Plus分发)的引用添加到PC-lint Plus配置中,可以轻松完成对MISRA C++兼容性的检查。该文件启用与MISRA C++准则相对应的消息,并将文本添加到已发布的消息中,以指定与每个适用消息相关的规则。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
PC-lint Plus提供对MISRA C++编码准则的支持。通过将对au-misra-cpp.lnt文件(随PC-lint Plus分发)的引用添加到PC-lint Plus配置中,可以轻松完成对MISRA C++兼容性的检查。该文件启用与MISRA C++准则相对应的消息,并将文本添加到已发布的消息中,以指定与每个适用消息相关的规则。 au-misra-cpp.lnt文件是使用标准PC-lint Plus选项语法的,易于阅读的纯文本配置文件,可以轻松地对其进行修改以满足任何单个项目的需求。
PC-lint Plus随附的参考手册包括一个支持矩阵,详细列出了每个指南的支持级别以及每个指南的支持机制。
考虑下面的示例,其中包含一些MISRA C++违规:
#includetypedef short int16_t; namespace Grid { class Point { public: Point(int16_t x, int16_t y) : x(x), y(y) { } int16_t xCoord() const { return x; } int16_t yCoord() const { return y; } int16_t originGridDistance() { return abs(x) + abs(y); } private: int16_t x; int16_t y; }; }
当使用PC-lint Plus分析此示例时,报告的MISRA C++违规行为包括:
1762: member function 'Grid::Point::originGridDistance' could be made const [MISRA C++ Rule 9-3-3]
int16_t originGridDistance() {
^
9114: implicit conversion of underlying type of integer cvalue expression from
'int' to 'int16_t' (aka 'short') [MISRA C++ Rule 5-0-3]
return abs(x) + abs(y);
^ ~~~~~~~~~~~~~~~
9119: implicit conversion of integer to smaller underlying type ('int' to
'int16_t' (aka 'short')) [MISRA C++ Rule 5-0-6]
return abs(x) + abs(y);
^~~~~~~~~~~~~~~
952: parameter 'x' of function 'Grid::Point::Point(int16_t, int16_t)' could be
const [MISRA C++ Rule 7-1-1]
Point(int16_t x, int16_t y) : x(x), y(y) { }
^
952: parameter 'y' of function 'Grid::Point::Point(int16_t, int16_t)' could be
const [MISRA C++ Rule 7-1-1]
Point(int16_t x, int16_t y) : x(x), y(y) { }
^
报告的每个违规都包括发生违规的位置、消息号和基本问题的文本描述,以及违反的MISRA C++规则。例如,在消息中:
1762: member function 'Grid::Point::originGridDistance' could be made const [MISRA C++ Rule 9-3-3]
int16_t originGridDistance() {
^
1762是PC-lint Plus消息号,该消息的文本为“可以将成员函数Grid::Point::originGridDistance’设为const”。违反的MISRA规则包含在消息文本末尾的方括号中。接下来的两行显示了与消息关联的上下文和位置。
《PC-lint Plus参考手册》包含每条消息的说明,并经常提供可用于解决问题的其他指导。此信息也可以显示在命令行上。例如,要显示消息1762的描述,请运行带有选项-help=1762的PC-lint Plus,以使PC-lint Plus显示以下内容:
The indicated (non-static) member function did not modify member data
and did not call non-const functions. Moreover, it does not make any
deep modification to the class member. A modification is considered deep
if it modifies information indirectly through a class member pointer.
Therefore, it could and probably should be declared as a const member
function.
(指示的(非静态)成员函数未修改成员数据,也未调用非const函数。而且,它不会对类成员进行任何深度修改。如果修改通过类成员指针间接修改信息,则认为修改很深。因此,它可以并且很可能应该声明为const成员函数。)
有关指定规则的信息,请查阅MISRA C++准则文档。
重写上面的示例以解决所报告的违规行为的一种方法是:
namespace Grid { class Point { public: Point(const int16_t x, const int16_t y) : x(x), y(y) { } int16_t xCoord() const { return x; } int16_t yCoord() const { return y; } int16_t originGridDistance() const { return static_cast(abs(x)) + static_cast (abs(y)); } private: int16_t x; int16_t y; }; }
偏差是源代码中的实例,其中已检查违反规则并认为可以接受。MISRA C++文档包含咨询和必需的规则。与必要规则的偏离通常涉及正式的批准流程,而与咨询规则的偏离则可能没有。虽然偏差过程的细节因项目而异,但是可以使用非常灵活的抑制机制在PC-lint Plus中配置偏差。当引用特定的符号或类型时,或在特定的行上时,可以通过多种方式来抑制大多数消息,例如在文件、函数或语句中。某些类型的禁止操作要求在源代码中添加注释,但大多数不需要。
例如,MISRA C++ Rule 9-3-3(上面由消息1762报告)是规定成员函数的必需规则,成员函数在可能的情况下必须为const。可以使用选项-efunc(1762,Grid::Point::originGridDistance)将函数calc的此消息禁止显示,该选项可以作为项目注释添加在项目配置文件或源代码中。其他消息可以用相同的方式在此函数中被抑制。评论可以遵循抑制选项,其中可能包括基本原理或形式偏差信息。
PC-lint Plus区分库代码(默认情况下包括外部和系统头,但可以自定义以包括头和模块的任何子集)和项目代码。默认情况下,PC-lint Plus将检查库代码和项目代码是否符合MISRA C++。通常希望将检查范围限制为项目代码,这很容易在引用au-misra3.lnt文件后,通过使用选项-wlib=4 -wlib=1来重置库警告级别来完成。也可以使用-elib和+elib选项轻松地为库代码启用或禁用单个消息。
相关推荐:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
Iron Software 为.NET开发者提供了难得的“即插即用”组件体验,无论是做内部工具,还是开发商业软件,都能大幅提升你的开发效率与产品质量。这款宝藏控件,不妨你也来试试!
TestComplete通过与Git、Jenkins和Zephyr的深度集成,构建了一个完整的持续测试生态系统:从代码变更的智能感知到批量测试的自动化执行,再到测试管理的智能化分析,实现了测试流程的全链路自动化。这种端到端的集成方案不仅显著提升了测试效率和质量,更通过实时反馈和可视化管理,为团队提供了精准的代码质量洞察。
微服务架构带来了灵活性,但也让测试变得复杂:不同协议适配费时费力、服务频繁变更导致测试用例维护困难、依赖环境搭建和稳定更是令人头疼。这些挑战常常成为敏捷交付和质量保障的瓶颈。Parasoft SOAtest正是为应对这些复杂分布式系统测试难题而设计的平台。它通过三大核心能力,帮助团队更从容地驾驭微服务测试:
HOOPS SDK为增材制造软件开发提供了从CAD数据读取、模型处理、可视化到文档生成的完整技术栈。无论是桌面端的工业级打印控制系统,还是基于云的在线制造平台,开发者都可通过HOOPS快速构建稳定可靠、用户体验优良的3D打印软件。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号