zoukankan      html  css  js  c++  java
  • 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分钟后才发现错误,而是很快就发现错误,减少一些测试时间,不然老是改来改去运行,很糟糕。

  • 相关阅读:
    A1023 Have Fun with Numbers (20分)(大整数四则运算)
    A1096 Consecutive Factors (20分)(质数分解)
    A1078 Hashing (25分)(哈希表、平方探测法)
    A1015 Reversible Primes (20分)(素数判断,进制转换)
    A1081 Rational Sum (20分)
    A1088 Rational Arithmetic (20分)
    A1049 Counting Ones (30分)
    A1008 Elevator (20分)
    A1059 Prime Factors (25分)
    A1155 Heap Paths (30分)
  • 原文地址:https://www.cnblogs.com/ydf0509/p/7861232.html
Copyright © 2011-2022 走看看