我经常使用像pyflakes和pep8这样的工具,以及coverage/工作服等,但是在我的项目中,我们有一些1000多行的文件,比如
FOO = 3
BAR['foo'] = 5 # Actually overwritten/dead-code
BAR['bat'] = 6
BAR['bazooka']['aimed'] = True # Actually Overwritten/dead-code
for i in BAR['bazooka'].keys():
BAR['bazooka'][i] = False
if not BAR['bazooka']['aimed']:
BAR['foo'] = 500
等等,在同一个文件中,我们还尝试使用for循环做一些聪明的事情,并根据一些其他变量替换dict堆栈的一部分。你知道吗
我很感兴趣的是python是否有任何方法(在执行时可以,但不需要修改每个var赋值)去“好吧,第3行的赋值实际上被第398行的循环中的赋值覆盖了”)
基本上是一种“这里分配的变量是gc(),所以我们有了一个新的值”
coverage无法识别,因为赋值是由代码执行的,我们无法根据所述循环按字母顺序对文件进行排序(循环更改是该值最大的地方)
例如,您可以将
BAR
定义为一个类的实例,该类跟踪在没有被引用的情况下重新分配了哪些项。为了简洁起见,子类化dict
(但最好是保持dict
和子类collections.Mapping
)也可以用其他方式简化概念证明(项目可以用其他方式“使用”,而不仅仅是通过索引等方式获得):这也给出了我认为的“假阳性”情况,例如:
这实际上是一种非常好的初始化
BAR['foo']
的方法(当然,if/else
也可以)。但在这种情况下很难保持沉默,在其他情况下也很难大声说出来,你似乎想打旗子。。。你知道吗相关问题 更多 >
编程相关推荐