我正在编写像状态机一样工作的代码。所以:
(实际上它有点复杂,但这些是基础知识,以保持简单。)
目前,我使用运行时断言来检查当前状态是否允许函数。这很好,因为它是一种自我记录;此外,我可以在断言上使用调试器停止并知道错误的位置。但缺点是它需要编译代码,并且在测试期间我需要找到自定义输入来触发相应的断言。
顺便说一句,我知道Windows WDK提供了注释,例如:
__drv_maxIRQL
__drv_setsIRQL
使用PreFAST静态检查这些注释,如果需要,可以触发错误。这种代码规范的静态验证正是我所需要的。
所以问题是:是否有任何工具可以为以状态机形式指定的程序提供类似的功能?