2014-09-28 74 views
6

我在一個項目中使用pylint,並有些東西打擾了我。Pylint:禁用子類的警告

例如,我創建了一個單元測試(unittest.TestCase的子類)。這個父類有很多方法,所以pylint說「R0904:太多的公共方法」。 要「解決」此警告,我禁用本地檢查。

但是我需要寫很多單元測試,並且它困擾我每次禁用localy這個檢查。

所以我正在尋找一種方法來禁用unittest.TestCase的所有子類的檢查。 在一個pylint配置文件中可能會有,但是我沒有找到任何東西。

你有什麼想法做到這一點?

非常感謝您的幫助。

+0

希望有一個更簡單的選項,但如果不是的話......你總是可以編寫一個插件,該子插件可以用於設計檢查器(或者monkeypatches,但子類化看起來比較乾淨)。我會通過添加一個新選項'ignore-test-classes'來實現,並使用它來跳過任何從任何被忽略的類繼承的類的'max-public-methods'檢查。 (處理類檢查器的ignore-iface-methods的代碼應該是一個很好的模型。)事實上,這似乎可能具有足夠的通用性,如果你這樣做,你可能會向上遊提交它。 – abarnert 2014-09-28 21:48:00

+2

這並不完全適合你,但是你總是可以將一個'pylintrc'放入一個包中(即任何帶有'__init __。py'的目錄),所以如果你在一個'tests'目錄下有所有的測試,例如,至少可以在項目的基礎上禁用它,即使不是全局的。 – 2014-09-29 00:10:48

+0

感謝您的回答。 Abarnert,我會檢查如何爲此創建一個插件。我的問題不僅僅是單元測試課。例如,我使用sqlalchemy和sqlalchemy.types.TypeDecorator的子類。 我會嘗試編寫一個通用插件來添加一個選項,如disable-XXXX = unittest.TestCase,...,... – 2014-09-29 06:53:44

回答

2

您可以定義一個pylintrc文件並使用該文件運行pylint。你可以這樣做:

$ pylint --generate-rcfile > pylintrc 

這會生成默認的pylintrc文件。這應該有一個段落,看起來像:

# Disable the message, report, category or checker with the given id(s). You 
# can either give multiple identifier separated by comma (,) or put this option 
# multiple time (only on the command line, not in the configuration file where 
# it should appear only once). 
#disable= 

你想添加以下行段後(但內消息控制部分):

disable=R0904 

或:

disable=too-many-public-methods 

然後你需要運行pylint與該rcfile。這可以使用--rcfile=<file>參數完成。