pycharm 对代码做静态检查
Posted 北风之神0509
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pycharm 对代码做静态检查相关的知识,希望对你有一定的参考价值。
对于下面这种情况,java c这些提前编译的语言,不给你运行机会就立马报错了,但对于动态语言运行之后才能报错,用运行的方法来检查代码错误是在是太坑了,这是py对比静态语言的巨大劣势,尤其是代码文件多行数较大时候,劣势有些明显。
1 #coding=utf8 2 import time 3 4 class A(object): 5 def __init__(self): 6 self.name = \'xiaomin\' 7 8 def fun(): 9 for i in range(100): 10 time.sleep(10) 11 print i 12 if i == 70: 13 print bbbb 14 15 16 fun()
time.sleep(600) 17 print A().age
这段代码有错误,第13行本地和全局中都找不到bbbb。
第17行A类的实例没有age这个属性,强行使用会在运行时候报错。
但这个报错有很大缺陷,第13行报错需要运行后等到第700秒才报错,如果不调用fun函数,第17行需要等600秒才报错,这里的sleep用来泛指运行其他代码功能消耗的时间。
尤其是代码文件多,嵌套判断多,不能很快的报出一些明显错误,实在是不太好,如果是不小一在编辑器哪一段按了几个键盘多打了几个字母,还要等运行才报错,那是十分坑的。这可能是国内大的项目,用py语言很少的原因之一。
还好,有一些工具flake8,pylint检查,如果使用pycharm,那就用自带的inspect code功能来检查。
最好设置一个自定义按键。
这样就能找到这个bbbb和age属性错误了。其余的是pep8语法,2to3的过时写法检查
这样的好处是不需要等运行10分钟后才发现错误,而是很快就发现错误,减少一些测试时间,不然老是改来改去运行,很糟糕。
以上是关于pycharm 对代码做静态检查的主要内容,如果未能解决你的问题,请参考以下文章