首页 > 编程语言 >遵守 MISRA 如何提高C++应用的安全性

遵守 MISRA 如何提高C++应用的安全性

时间:2023-08-03 14:55:53浏览次数:40  
标签:指南 Perforce MISRA C++ 应用 安全性

Perforce在支持需要稳定和安全的应用程序方面有着悠久的历史。凭借 50 多年的应用程序开发经验,从客户、趋势和竞争对手那里学到了很多东西。Perforce从软件开发的所有领域都采用了最佳实践,并试图将这些实践应用于Perforce所做的一切。Perforce采用了单元测试、自动化测试、敏捷开发、代码审查、持续集成等等。多年来,Perforce制定了自己的一套内部发展指南,但Perforce一直在寻找改进的方法。 像 MISRA® C++ 这样的指南是识别新检查的宝贵资源,Perforce可以将其应用于代码以继续使其更好。

 

 

MISRA:增强软件安全性和稳定性

 

 

MISRA起源于汽车行业,在汽车行业中保持高标准的软件开发非常重要。MISRA提供了一套适用于任何软件应用程序的全面指南,在确保软件安全性和稳定性方面发挥着至关重要的作用。这些准则包含各个方面,例如避免比较运算符右侧的副作用,以及不执行任何指针算术。虽然开发团队通常有自己的代码审查指南,但MISRA的附加规则集的加入,这些规则已经经过了广泛地研究并证明其可以提高软件质量,代表了在保护软件完整性和可靠性方面的重大飞跃。

 

 

实施和执行MISRA标准以改进开发实践

 

 

理解并同意MISRA等标准是提升团队开发实践的重要开始。然而,这些标准的有效性取决于它们的一致应用和测试。 在持续集成/持续交付(CI/CD)或质量保证(QA)流程中集成 Klocwork 等专用工具以检查特定的MISRA要求,是确保遵守既定标准的关键手段。此外,这种类型的过程应扩展到应用程序中的任何第三方C++库,例如 ICU、OpenSSL、DB Client库、mat库等。通过将MISRA标准应用于这些库,可以防止应用程序或C++库中出现的漏洞。在整个开发生命周期中强调和实施MISRA指南可以显着提高软件的安全性和稳定性。

 

了解更多静态代码分析、Helix QAC、Klocwork技术文章,免费试用:[email protected]

 

翻译

搜索

复制

<iframe></iframe>

标签:指南,Perforce,MISRA,C++,应用,安全性
From: https://www.cnblogs.com/polelink/p/17603328.html

相关文章

  • C/C++ 数据结构五大核心算法之动态规划算法-给你一根长度为 n 的金条,请把金条剪成 m
    动态规划也是一种分治思想,但与分治算法不同的是,分治算法是把原问题分解为若干子问题,自顶向下,求解各子问题,合并子问题的解从而得到原问题的解。动态规划也是自顶向下把原问题分解为若干子问题,不同的是,然后自底向上,先求解最小的子问题,把结果存储在表格中,在求解大的子问题时,直接从表......
  • 常用c++ STL 汇总
    常用STL:vector变长数组,倍增的思想初始化://初始化vector<int>a;vector<int>a(n);vector<int>a[n];vector<int>a(n,0);//长度为n,值为0操作:size()//返回元素个数empty()//返回是否为空clear()//清空front()/back()//返回第一个/最后一个元素push_bac......
  • C++11可变模版参数妙用
    //参考:https://blog.csdn.net/wmy19890322/article/details/121427697点击查看代码//创建对象template<typenameT,typename...Args>T*CreateInstance(Args...args){ returnnewT(std::forward<Args>(args)...);}//可变参数模版实现泛化的delegatetemplate<typena......
  • C++入门到放弃(07)——构造函数和析构函数
    ​1.构造函数和析构函数是什么1.1构造函数通常一个类,其内部包含有变量和函数,当我们想要使用类的时候,总是会不得不面临这样一个问题,需要对类进行初始化,否则内部这些变量就会是随机值,导致程序出现异常。为此,我们需要在使用类之前对它进行初始化,C++就提供了这样一类特殊的函数——......
  • C和C++进阶的学习笔记总结目录
    C语言–C语言基础知识积累记录学习教程:参考C++教程网之跟我一起学Cdo{…}while(0)的用途汇总(欢迎补充)在一些Linux内核和其它的开源代码中可见到【C语言】《带你学C带你飞》,笔记:链接––C++–一张图总结GoogleC++编程规范(GoogleC++StyleGuide)C++基础学习目录总结参考:链......
  • c++11 std::condition_variable
    std::condition_variable需要配合unique_lock使用,wait(unique_lock<mutex>&)notify_one()调用时,只有随机一个wait()线程会得到通知notify_all(),所有wait()线程会被通知并得到执行wait()调用会阻塞当前线程wait()线程中用到的unique_lock不会阻塞notify线程中的锁//condit......
  • 3.C++中NULL和nullptr区别
    3.C++中NULL和nullptr区别1.NULL是什么在《NULL,0,'\0',"0","\0"的区别》一文中,我们已经知道了在C中NULL是什么,在C的头文件中,通常定义如下:#defineNULL((void*)0)但是在C++中,它是这样定义的:#defineNULL0可以在stddef.h看到完整的这段:#undefNULL#ifdefined(__cplusp......
  • 2.简要说明C++的内存分区
    2.简要说明C++的内存分区1.一个由C/C++编译的程序占用的内存分为以下几个部分:C++中的内存分区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区和代码区。如下图所示栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈......
  • 4.可以说一下你了解的C++得内存管理吗?
    4.可以说一下你了解的C++得内存管理吗?1.一个由c/C++编译的程序占用的内存分为以下几个部分:C++中的内存分区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区和代码区。如下图所示栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自......
  • 5.C++中类的数据成员和成员函数内存分布情况
    5.C++中类的数据成员和成员函数内存分布情况非静态成员的数据类型大小之和。编译器加入的额外成员变量(如指向虚函数表的指针)。为了边缘对齐优化加入的padding。空类(无非静态数据成员)的对象的size为1,当作为基类时,size为0。C++类是由结构体发展得来的,所以他们的成员变......