WDK中的Prefast工具使用

PREfast

你可以使用PREfast来分析内核模式的驱动(KMDF)和其他内核模式的组件。你也可以使用PREfast来分析用户模式的驱动,即UMDF。PREfast是WDK自带的,你不需要自己再次安装。

默认情况下, PREfast是根据KMDF的规则来分析代码的。为了能够分析UMDF,你必须设置分析模式为__user_driver,详情见 “如何指定PREfast分析模式”, 或者更简单的方式是,直接忽略内核相关的警告.

PREfast 分析模式

PREfast分析模式决定了它分析代码是所采用的规则。The analysis-mode annotation that is defined in %wdk%/inc/ddk/driverspecs.h informs PREfast whether a particular body of code is user-mode or kernel-mode code and whether the code is actually a driver. This annotation applies to an entire source file.

分析模式可以是下面模式定义中的一个:

__kernel_driver

对应内核驱动代码. 这个是缺省的分析模式。

__kernel_code

对应内核模式非驱动代码。

__user_driver

对应用户模式的驱动代码。

__user_code

对应用户模式非驱动代码。

如果__kernel_driver 分析模式对于一个特定的驱动来说,是一个错误的分析的模式,你可以在源码文件或者合适的头文件中插入合适的分析模式定义,来实现分析模式的自定义,当然了,这个定义必须放在任何函数之前,最好的一个做法就是放在#include 或者语句之后。

如何运行PREfast

1. 打开你的编译环境的窗口。

2. 使用 cd 命令进入你的源码目录.

3. 输入prefast build, 也可以带有build的参数,例如:

prefast build –cZ

clip_image002

PREfast分析代码,然后把分析的结果写入到xml文件,缺省的xml文件是Defects.xml,它的路径是 %wdk%/tools/pfd/。 你如果想写到别的目录下,你可以使用 /LOG= 参数来切换.

PREfast分析结果

你可以使用下面的命令来显示分析的结果:

· 使用prefast view 命令来在窗口中显示分析结果。如下图:

· clip_image004

· 使用prefast list 命令在编译环境中显示检测结果. 就是在那个cmd窗口下显示。

我就着重介绍一下PREfast defect log viewer 吧,因为这个我感觉用着比较方便,它提供了一个图形化的窗口。

clip_image005

Message List中, 你可以有如下操作:

· 点击列表头—Description, Warning, Source Location, or In Function—用来给这些消息排序.

· 双击一个消息就打开了View Annotated Source 界面,显示了这个消息相关的代码段.如下图

clip_image007

注:点击Show Entire File按钮显示整个文件。

· 点击Filter按钮 显示了过滤规则,在这里你可以选择相关的过滤规则。如下图:

clip_image009

注:点击Invert隐藏你所选中的过滤规则。

展开阅读全文

没有更多推荐了,返回首页