【问题标题】:Unread variables in a program with only if/else statements [closed]只有 if/else 语句的程序中的未读变量[关闭]
【发布时间】:2011-12-08 15:33:14
【问题描述】:

给定一个只有 if/else 语句的程序,是否可以决定哪些变量出现但从未读取?

【问题讨论】:

  • 如果程序只包含 if/else 语句,它们里面会是什么?
  • “发生但从未读取”是指“已修改/初始化但从未访问过”吗?

标签: theory


【解决方案1】:

是的。给定一个只有 if/else 语句的程序[假设没有向后分支和循环],程序中有有限数量的路径。

您可以检查所有这些,检查必须满足哪些条件才能到达每个路径,并找到矛盾[无法访问的路径],从而找到从未使用过的变量。

这可以实现为Hoare logic 的更简单版本,自动化非常简单,没有循环。 [用循环当然不可能自动化它]

【讨论】:

  • 谢谢!正是我需要听到的。
【解决方案2】:

您可以在特定的 if 块中放置跟踪或调试语句,例如

if (assertion) 
{
    // print or echo or var_dump etc..
} 
else if(assertion) 
{
    // print or echo or var_dump etc..
} 
else if(assertion) 
{
    // print or echo or var_dump etc..
}

如果您可以通过这种方式跟踪代码,则可以断言块中的任何变量或代码将被执行/读取。

【讨论】:

  • 我认为 OP 意味着程序还有一个输入...您将如何决定激活程序以覆盖所有可访问路径的输入?
猜你喜欢
  • 2017-09-05
  • 1970-01-01
  • 2018-03-29
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多