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分鍾后才發現錯誤,而是很快就發現錯誤,減少一些測試時間,不然老是改來改去運行,很糟糕。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM