个人使用程序的 MISRA-C 编码指南?
MISRA-C coding guidelines for personal use programs?
我通常是木工,而不是开发人员。我正在学习嵌入式系统的 C/C++,同时试图让我的一些工具自动化,以节省我数小时的重复性工作。
现在,它很有趣并且进展顺利,我已经花了大概一百个小时 coding/learning 并且已经节省了更多时间*。
我想继续购买并遵循 MISRA 编码规则 "mandatory good idea"? MISRA 包含什么?只是编码规则,还是一些更安全的技巧?
那些工具可能很危险(毕竟它们会砍木头,而人体的抵抗力要差得多...)。
注意:我显然分 4 个步骤进行测试:
只是图片 运行 一个 OSD 和 SD 卡记录器(有一天我会制作一个 anylze 工具并停止阅读那些)。
我把工具塞进去了,上面什么都没有
我在泡沫上使用软 drill/cutters
我手放在急停按钮上,距离较远进行实测
而且我是唯一的员工,没有其他人可以访问我的工作场所。
*现在我已经将钻机变成了一种 3D 木工打印机(完成工作中不精确的部分),并将 "cutter-board" 变成了自动化打印机。
注意 2:我不是母语人士,所以工具的名称可能不正确。
MISRA 最初是为汽车行业设计的,尽管在这个阶段它已经发展得很好。 MISRA 指南规定的目标是:
- 确保安全
- 为软件带来稳健性和可靠性。
- 当与属性的安全发生冲突时,必须以人身安全为先。
- 在系统设计中同时考虑随机和系统故障。
- 展示稳健性,而不仅仅是依靠没有失败。
- 在产品的设计、制造、操作、维修和处置中应用安全考虑因素。
这些文档主要包含基于规则的代码咨询信息,这些信息试图满足这些目标。 MISRA 文档价格多年来有所下降,一些文档可以从 MISRA 在线购买,价格低至 10 英镑 + 增值税。
但是,作为初学者和业余编码人员,我建议首先加强您对 C 和 C++ 的了解。虽然在大多数行业领域,遵循相关标准(如果适用)通常是好的,但编写文档时假设 reader 在语言以及管理完整的关注点和流程方面具有非常扎实的基础-用它们编写的规模商业类型的应用程序。如果您的工作室仅供个人使用,并且取决于您所在辖区的工作场所安全管理规则,我可以说,对语言、语言工具和硬件有很好的理解将使您开始就如何在这样的阶段,比阅读 MISRA 可以编写更多的代码。
正如上面所评论的,值得重申的是,MISRA 不是某种魔杖或具体的方法来保证您的代码良好、有效且安全。好代码和坏代码都可以符合标准。在完全掌握您正在做的事情之前遵循 MISRA 可能与确保车间中的每根电缆都整齐地固定到位,然后用凿子刺伤自己是一样的。
MISRA-C 是一组规则,可强制您从 C 程序中清除众所周知的问题和定义不明确的行为。它是 C 语言的 "safe subset",通过针对众所周知的错误的规则禁止各种形式的危险做法,例如依赖定义不明确的行为或隐式类型转换。 C 的优势在于它是一门非常古老的语言,这意味着所有的语言缺陷都是众所周知的。
MISRA-C 非常注重静态代码分析以在编译时发现错误。这是需要牢记的一点,据我所知,不存在可以检查 MISRA-C 合规性的开源静态代码分析器工具。商业工具往往非常昂贵,而且通常也充满 bugs/false 积极因素。尽管如此,其中大部分还是有用的。
MISRA-C 只专注于 C 编程,它不解决 CPU 或微控制器问题等,尽管它确实强制执行某些形式的 防御性编程 ,这是针对 EMI、运行-away 代码和其他形式的意外程序行为的计数器。 (有关 C 以外的一般提示和技巧列表,请参阅 。但并非所有这些都一定适用于您的特定机器。)
为了证明 MISRA 合规性,您创建了一个 "compliance matrix",它展示了您如何捕获 MISRA-C 文档的每个 directive/rule:通过编译器消息、同行评审、静态代码分析等。
文档中的大多数规则都很有道理,但有些则不然。然而,MISRA-C 确实允许偏离大多数规则,将它们列为以下之一:
- 必填项。不允许有偏差。
- 推荐。如果不遵守规则,必须调用正式的偏差程序。
- 咨询。可以在不正式偏离的情况下偏离规则。
通常,创建 MISRA-C 合规性是通过建立公司编码标准来完成的,该标准涉及所有规则。实施它的最简单方法是在本文档中写下在公司级别遵循哪些规则以及跳过哪些规则。然后相应地设置静态代码分析过滤器。
我通常是木工,而不是开发人员。我正在学习嵌入式系统的 C/C++,同时试图让我的一些工具自动化,以节省我数小时的重复性工作。
现在,它很有趣并且进展顺利,我已经花了大概一百个小时 coding/learning 并且已经节省了更多时间*。
我想继续购买并遵循 MISRA 编码规则 "mandatory good idea"? MISRA 包含什么?只是编码规则,还是一些更安全的技巧?
那些工具可能很危险(毕竟它们会砍木头,而人体的抵抗力要差得多...)。
注意:我显然分 4 个步骤进行测试:
只是图片 运行 一个 OSD 和 SD 卡记录器(有一天我会制作一个 anylze 工具并停止阅读那些)。
我把工具塞进去了,上面什么都没有
我在泡沫上使用软 drill/cutters
我手放在急停按钮上,距离较远进行实测
而且我是唯一的员工,没有其他人可以访问我的工作场所。
*现在我已经将钻机变成了一种 3D 木工打印机(完成工作中不精确的部分),并将 "cutter-board" 变成了自动化打印机。
注意 2:我不是母语人士,所以工具的名称可能不正确。
MISRA 最初是为汽车行业设计的,尽管在这个阶段它已经发展得很好。 MISRA 指南规定的目标是:
- 确保安全
- 为软件带来稳健性和可靠性。
- 当与属性的安全发生冲突时,必须以人身安全为先。
- 在系统设计中同时考虑随机和系统故障。
- 展示稳健性,而不仅仅是依靠没有失败。
- 在产品的设计、制造、操作、维修和处置中应用安全考虑因素。
这些文档主要包含基于规则的代码咨询信息,这些信息试图满足这些目标。 MISRA 文档价格多年来有所下降,一些文档可以从 MISRA 在线购买,价格低至 10 英镑 + 增值税。
但是,作为初学者和业余编码人员,我建议首先加强您对 C 和 C++ 的了解。虽然在大多数行业领域,遵循相关标准(如果适用)通常是好的,但编写文档时假设 reader 在语言以及管理完整的关注点和流程方面具有非常扎实的基础-用它们编写的规模商业类型的应用程序。如果您的工作室仅供个人使用,并且取决于您所在辖区的工作场所安全管理规则,我可以说,对语言、语言工具和硬件有很好的理解将使您开始就如何在这样的阶段,比阅读 MISRA 可以编写更多的代码。
正如上面所评论的,值得重申的是,MISRA 不是某种魔杖或具体的方法来保证您的代码良好、有效且安全。好代码和坏代码都可以符合标准。在完全掌握您正在做的事情之前遵循 MISRA 可能与确保车间中的每根电缆都整齐地固定到位,然后用凿子刺伤自己是一样的。
MISRA-C 是一组规则,可强制您从 C 程序中清除众所周知的问题和定义不明确的行为。它是 C 语言的 "safe subset",通过针对众所周知的错误的规则禁止各种形式的危险做法,例如依赖定义不明确的行为或隐式类型转换。 C 的优势在于它是一门非常古老的语言,这意味着所有的语言缺陷都是众所周知的。
MISRA-C 非常注重静态代码分析以在编译时发现错误。这是需要牢记的一点,据我所知,不存在可以检查 MISRA-C 合规性的开源静态代码分析器工具。商业工具往往非常昂贵,而且通常也充满 bugs/false 积极因素。尽管如此,其中大部分还是有用的。
MISRA-C 只专注于 C 编程,它不解决 CPU 或微控制器问题等,尽管它确实强制执行某些形式的 防御性编程 ,这是针对 EMI、运行-away 代码和其他形式的意外程序行为的计数器。 (有关 C 以外的一般提示和技巧列表,请参阅
为了证明 MISRA 合规性,您创建了一个 "compliance matrix",它展示了您如何捕获 MISRA-C 文档的每个 directive/rule:通过编译器消息、同行评审、静态代码分析等。
文档中的大多数规则都很有道理,但有些则不然。然而,MISRA-C 确实允许偏离大多数规则,将它们列为以下之一:
- 必填项。不允许有偏差。
- 推荐。如果不遵守规则,必须调用正式的偏差程序。
- 咨询。可以在不正式偏离的情况下偏离规则。
通常,创建 MISRA-C 合规性是通过建立公司编码标准来完成的,该标准涉及所有规则。实施它的最简单方法是在本文档中写下在公司级别遵循哪些规则以及跳过哪些规则。然后相应地设置静态代码分析过滤器。