在Python中是否存在类似于http://jppa.sourceforge.net的现有的副作用/纯度分析工具?
发布于 2013-12-30 15:00:32
我不知道有什么存在,但以下是一些常见的制作方法:
global关键字。出于实际目的,在正文中只有一个return语句的最体面的编写函数很可能是纯的。另一方面,如果一个函数没有return语句,那么它要么是无用的,要么是不纯的。NameError,那么您知道它要么是不纯的(因为它在更高的级别上没有访问变量的权限),要么是在它中有一个错误(在定义变量之前引用一个变量或者其他类似的变量),但是后一种情况应该由正常的测试来处理。如果您想这样做,检查模块的函数等距函数可能很有用。
对于您测试的每个函数,如果它有一个相对较小的域(例如,一个输入可以是1、2、3或4),那么您可以对所有可能的输入进行详尽的测试,并以这种方式得到一定的答案。如果它有一个有限的、有限的但大的区域(例如所有0到1000之间的实数(无限但有限),或者-12345到67890之间的所有整数),那么您可以尝试对该域中的输入进行抽样,并使用它获得纯度的概率。但是,这种方法可能不是很有用,因为不太可能指定函数的域,因此您可能只能在编写函数时检查它,在这种情况下,您可能不需要分析它。编辑:我回到这个问题后,有人以新的知识被否决了!ast模块应该使编写您自己的分析工具相对容易,因为它允许您访问代码的抽象语法树。穿过这棵树,看看是否有什么能阻止纯洁的东西,这应该是相当容易的。这是一种比将源文件作为文本分析更好的方法,我可能会在某个时候尝试一下。最后,这问题也可能是有用的,也可能是这问题,它基本上是这个问题的重复。
https://stackoverflow.com/questions/20840337
复制相似问题