用于Linux内核模块和设备驱动程序的静态分析工具

man*_*m-n 7 c memory-leaks static-analysis linux-device-driver linux-kernel

我需要一个静态分析工具,用于我为基于ARM的主板编写的Linux设备驱动程序.我正在考虑下面提到的一些工具:

  1. Sparse是一种计算机软件工具,已在Linux上提供,旨在查找Linux内核中可能存在的编码错误.
  2. Linux验证中心有两个活跃项目旨在提高可加载内核模块的质量.

    • Linux Driver Verification (LDV) - 用于Linux设备驱动程序的静态源代码验证的综合工具集.
    • KEDR Framework - 用于动态分析和验证内核模块的可扩展框架.
    • 另一个正在进行的项目Linux File System Verification旨在开发用于验证Linux文件系统实现的专用工具集.
  3. 启用-Werror,-Wextra-WallGCC,并与运行Valgrind.

上次我玩Sparse时发现输出很混乱,并没有找到解释输出的好文档.有没有人有关于稀疏工具的好文档?我可以用于Linux驱动程序验证的其他免费静态分析工具是什么?我知道LINT工具,但它的许可.

Con*_*ang 4

Smatch是一个用于内核的 C 静态分析工具。它已经产生了数百个补丁。相当多的内容与安全相关或者对于稳定的内核来说足够重要。

  • 还有另一个静态分析工具,[Coccinelle](http://coccinelle.lip6.fr/),用于查找内核中的错误。另请参阅http://lwn.net/Articles/412750/。不过我自己还没有尝试过。 (2认同)