Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件MISRA/QA-C使用强氧抑制信息_C_Embedded_Doxygen_Misra - Fatal编程技术网

文件MISRA/QA-C使用强氧抑制信息

文件MISRA/QA-C使用强氧抑制信息,c,embedded,doxygen,misra,C,Embedded,Doxygen,Misra,我目前正在从事一个项目,该项目必须符合MISRA 2012标准。但在嵌入式世界中,你不能满足每一条MISRA规则。所以我必须抑制QA-C生成的一些消息。他最好的解决方案是什么 我正在考虑在每个模块头文件中创建一个表,其中包含对相关代码行的引用(\ref和\anchor)、描述等。第一个问题是:我不能使用Doxygen标记表功能,因为这样描述必须在一行中,因为Doxygen表不支持换行。所以我想用一个简单的逐字记录表,你觉得怎么样 或者有没有办法自动生成这样一个表 问候 m0nKeY根据MISRA

我目前正在从事一个项目,该项目必须符合MISRA 2012标准。但在嵌入式世界中,你不能满足每一条MISRA规则。所以我必须抑制QA-C生成的一些消息。他最好的解决方案是什么

我正在考虑在每个模块头文件中创建一个表,其中包含对相关代码行的引用(\ref和\anchor)、描述等。第一个问题是:我不能使用Doxygen标记表功能,因为这样描述必须在一行中,因为Doxygen表不支持换行。所以我想用一个简单的逐字记录表,你觉得怎么样

或者有没有办法自动生成这样一个表

问候
m0nKeY

根据MISRA,所有这些不需要的规则必须由您的偏差程序处理,因为它们要么是“必需的”,要么是“建议的”。你不允许偏离“强制性”规则。(严格来说,您不需要为咨询规则调用偏差程序。)

根据我的经验,到目前为止,最安全、最顺利的方法是不允许个别情况下的偏差。与MISRA的所有偏差应在贵公司的编码标准中说明,为了偏离,您必须更新该文件。这反过来会强制文档所有者的批准,而文档所有者最好是团队中最有经验的C人员

这样,您就可以防止经验不足的团队成员仅仅因为不理解规则并将其误认为是误报而误解规则并忽略重要规则。文件中应该有一个理由,说明为什么您偏离的规则对您的公司不可行

这意味着开发团队中的每个人都可以在任何时候偏离列出的规则,而无需诉诸任何形式的官僚主义


一旦有了这样的设置,只需自定义静态分析仪并删除/忽略不需要的警告。这样,您就消除了工具中的大量噪音和错误警告。

要回答您的问题,请使用

我们在代码审查过程中将其用作工具。我使用自定义标记标记代码
\reviewme
,将该功能添加到需要同行审查的所有代码列表中。下一个人可以过来清除标签。我们有另一个自定义标记
\reviewBy
,它不使用
\xrefitem
,而是简单地在代码块中输入审查者的姓名和日期,说明审查者和时间。随着越来越多的代码库和开发人员的加入,这已经变得有点笨拙了。现在,我们正在研究与版本控制过程集成的工具,以便更好地处理此问题。但当我们开始这项工作时,它运行良好,符合一个小预算。但这个例子应该能让你了解我们的能力

以下是输出内容的屏幕截图-专有内容和编辑的自动名称:

下面是我们如何将此自定义标记作为别名添加到doxy文件中的xrefitem的过程,如下所示

ALIASES = "reviewme = \xrefitem reviewme \"This section needs peer review\" \"Documentation block or code sections that need peer review\""
要从GUI中添加它,您可以转到
Expert->Project->alias
并添加一行如下内容

reviewme = \xrefitem reviewme "This section needs peer review" "Documentation block or code sections that need peer review"
同样的道理,只是不需要在整件事的周围加引号,也不需要去掉里面的引号

\xrefitem
\todo
\bug
在doxygen中工作的基础。你可以列出你内心所渴望的任何东西


特别针对米斯拉的例外情况:伦丁的职位有很多优点。我会考虑的。我认为记录编码标准异常的更好地方是静态分析工具本身。许多工具都有自己的注释,您可以将违反规则的行为归类为“已原谅”或其他类型。但一般来说,这不会将它们从列表中删除,它只允许您对它们进行筛选或排序。也许您可以在doxygen之前运行的脚本中使用正则表达式,如果您真的担心,该脚本将使用自定义的
\xrefitem
替换特定于工具的注释。或者,vice vera,用工具的注释替换doxy注释。

在当前形式下,您的问题太广泛,无法在此处回答。此外,诸如“最佳解决方案是什么”或“你认为什么”等问题(根据问题的本质)也会因主要基于意见的附加问题而受到影响。在你的问题中很难找到与编程相关的问题-请参阅“如何提问”的帮助部分,以及访问教程页面和常见问题解答。“在嵌入式世界中,你不能满足每一条MISRA规则”。这句话对我来说很有趣,因为MISRA是针对嵌入式世界的,而不是别的。如果这样说的话,我会更同意:“有些编译器/专有的东西有时会使MISRA complient变得困难,有时一个组织中的多个编码标准可能会相互矛盾,在这些情况下,需要小心地放松其中一个或另一个中的规则。”对不起“在嵌入式世界中,你不可能满足每一条MISRA规则“。计算糟糕。我有时需要在个案基础上打破MISRA规则,因为我有另一种编码标准。具体而言,公司编码标准规定,不要制作ISR原型。但是米斯拉说,所有的功能都应该有一个原型。一般来说,我们希望MISRA规则保持开启状态,因为我们希望在其他地方遵守MISRA规则。我们考虑的做法是添加我们自己的\xrefitem以将所有异常提取到一个doxygen列表中,但在这种有限的情况下,它只会成为一个所有ISR的列表,这并不是非常必要的。@Nick有什么特别的原因说明ISR没有原型吗?在大多数系统上,它们需要一个,特别是在用C编写中断向量表的微控制器系统上。无论如何,对于这样的情况,您可以做的是保持规则打开,但是