我正在嵌入式系统项目(C99语言)中设置Coverity-Scan。该代码库利用中断和系统外设寄存器(如大多数嵌入式软件)。我不知道是否忽略了中断处理程序或易失性设备寄存器更改导致的代码路径。
我需要注释中断处理程序以标记它们随时被调用吗?如果是这样,如何?
设备寄存器通过易失性指针访问。是否需要添加一些注释,以向分析仪建议寄存器可以包含的值范围是多少,或者它们实际上是易失的?
通常,您不需要做任何特殊的事情,例如注释来分析中断处理程序。 Coverity会扫描代码中的每个函数,即使它没有看到对其的显式调用。 Coverity也理解“易失性”。
可以告知分析有关变量值的约束。在分析手册中查找“建模”。但是,除非因值不可行而导致误报,否则您可能不需要这样做。
[通常,如果您担心Coverity缺少结果,我建议您故意插入一些与手册中的示例类似的错误,并查看分析是否发现了这些错误。如果没有,您可以尝试在此处询问具体示例或与他们的支持团队联系。
(披露:我曾经为Coverity / Synopsys工作。)