Python副作用/纯度分析工具?

2024-05-15 23:52:08 发布

您现在位置:Python中文网/ 问答频道 /正文

Python中是否有类似于Java中的http://jppa.sourceforge.net的副作用/纯度分析工具?在


Tags: 工具httpnetjava副作用sourceforge纯度jppa
1条回答
网友
1楼 · 发布于 2024-05-15 23:52:08

我不知道有什么,但这里有一些制作方法:

  • 将源文件作为文本进行分析—使用正则表达式来查找明确显示函数的内容并不是纯粹的—例如global关键字。出于实际目的,大多数编写得很好的函数体中只有return语句的函数可能是纯函数。另一方面,如果一个函数没有return语句,那么它要么是无用的,要么是不纯洁的。

  • 将源文件中的函数作为代码进行分析。如果孤立地测试一个函数会产生NameError,那么您知道它要么是不纯的(因为它无法访问更高级别的变量),要么是其中有错误(在定义变量之前引用一个变量或类似的变量),但是后一种情况应该被正常测试覆盖。如果您想这样做,inspect模块的函数isfunction可能会很有用。在

    对于一个输入,你可以得到一个相对较小的输入。如果它有一个有限的或有限的但很大的域(例如0到1000之间的所有实数(无限但有限的),或者所有在-12345和67890之间的整数),那么你可以尝试在该域中选择一组输入,并用它来获得纯度的概率。但是,这种方法可能不是很有用,因为不太可能指定函数的域,因此您可能只能在编写函数时检查它,在这种情况下,您可能不需要分析它。

  • 做一些聪明的事,可能和上面的技巧相结合。例如,建立一个神经网络,输入为函数的文本,输出为其纯的可能性。然后你可以在你知道的纯函数或不纯函数的例子上训练网络,然后用它来处理未知纯度的函数。

编辑: 在有人投了反对票后,我又回到了这个问题上!ast模块应该使编写这样的分析工具相对容易,因为它允许您访问代码的抽象语法树。穿过这棵树,看看是否有什么东西阻碍了纯洁,这应该是相当容易的。这是一种比将源文件分析为文本要好得多的方法,我可能会在某个时候尝试一下。 最后,this问题也可能有用,而且this一个,基本上是这个问题的重复。在

相关问题 更多 >