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

  • 相关阅读:
    Hibernate整合Druid数据库连接池遇到的问题整合
    Spring 整合quartz 时 定时任务被调用两次以及quartz 的配置
    BigDecimal divide:Non-terminating decimal expansion; no exact representable decimal result.
    Hibernate: Encountered a duplicated sql alias [] during auto-discovery of a native-sql
    oracle与mysql的区别
    搜索评价指标——NDCG
    java 动态修改注解值
    eclipse 取消置顶
    Xiangqi
    All in All
  • 原文地址:https://www.cnblogs.com/ydf0509/p/7861232.html
Copyright © 2011-2022 走看看