使用Doxygen记录MISRA / QA-C消息抑制

问题描述 投票:5回答:2

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

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

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

问候m0nKeY

c embedded doxygen misra
2个回答
2
投票

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

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

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

这意味着开发团队中的每个人都可以随时偏离列出的规则,而无需调用任何形式的官僚作风。

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


1
投票

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

我们在代码审查过程中使用它作为工具。我使用自定义标记\reviewme标记代码,该标记将函数添加到需要进行同行评审的所有代码的列表中。下一个人可以来并清除那个标签。我们有另一个自定义标签\reviewedby,它不使用\xrefitem,只是简单地将reivewers名称和日期放在代码块中,说明谁审核了它以及何时查看。随着大量代码库和更多开发人员的扩展,这已经变得有点笨拙了。现在我们正在研究与我们的版本控制流程集成的工具,以便更好地处理这个问题。但是,当我们开始这项工作时,它运作良好并且适合预算。但是那个例子应该让你知道是否有能力。

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

以下是我们如何在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的帖子有很多优点。我会考虑的。我认为更好地记录编码标准的例外情况是静态分析工具本身。许多工具都有自己的注释,您可以将规则违规分类为“原谅”或其他任何内容。但通常这不会从列表中删除它们,它允许您只是过滤或排序它们。也许您可以在doxygen之前运行的脚本中使用REGEX,如果您真的担心,它将使用自定义\xrefitem替换工具特定注释。或者反之,用工具的注释替换doxy注释。

© www.soinside.com 2019 - 2024. All rights reserved.