5

我目前正在开展一个项目,该项目必须符合 MISRA 2012。但在嵌入式世界中,您无法满足所有 MISRA 规则。所以我必须抑制 QA-C 生成的一些消息。他最好的解决方案是什么?

我正在考虑在每个模块头文件中制作一个表,其中包含对相关代码行、描述等的引用(\ref 和 \anchor)。第一个问题是:我不能使用 Doxygen 降价表功能,因为那时描述必须在一行中,因为 Doxygen 表不支持换行。所以我想用一个简单的逐字表,你怎么看?

或者有没有办法自动生成这样的表?

问候 m0nKey

4

2 回答 2

2

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

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

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

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

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

于 2015-01-08T10:33:26.400 回答
1

一般回答您的问题:要创建 doxygen 中任何内容的聚合出现列表,请使用\xrefitem

我们在代码审查过程中使用它作为工具。我使用自定义标签标记代码,该标签\reviewme将该功能添加到需要同行评审的所有代码列表中。下一个人可以过来清除那个标签。我们还有另一个自定义标签\reviewedby,它不使用\xrefitem,只是将接收者的姓名和日期放在代码块中,说明谁查看了它以及何时查看。随着大型代码库和更多开发人员的扩展,这变得有点笨拙。现在我们正在寻找与我们的版本控制过程集成的工具,以更好地处理这个问题。但是当我们开始这个项目时,它运行良好并且符合小额预算。但是那个例子应该给你一个有能力的想法。

这是输出的屏幕截图 - 专有内容和汽车名称已编辑:

以下是我们如何在 doxy 文件中将此自定义标签作为别名添加到 xrefitem 中,如下所示

ALIASES = "reviewme = \xrefitem reviewme \"This section needs peer review\" \"Documentation block or code sections that need peer review\""

要从 GUI 添加它,您将去Expert->Project->Aliases添加这样一行

reviewme = \xrefitem reviewme "This section needs peer review" "Documentation block or code sections that need peer review"

同样的事情,只是不需要在整个事情周围加上引号并避开内部引号。

\xrefitem是事物如何喜欢\todo\bug在 doxygen 中工作的基础。你可以列出你心中想要的任何东西。

专门针对 MISRA 例外:Lundin 的帖子有很多优点。我会考虑的。我认为记录编码标准例外情况的更好地方是静态分析工具本身。许多工具都有自己的注释,您可以在其中将违反规则归类为“有正当理由”或其他。但通常这不会将它们从列表中删除,它只允许您过滤或排序它们。\xrefitem也许您可以在 doxygen 之前运行的脚本中使用 REGEX,如果您真的担心,它将用自定义替换工具特定的注释。反之亦然,将 doxy 注释替换为工具的注释。

于 2015-01-08T17:04:04.143 回答