我决定通过pylint
运行一些已知的工作代码来提高代码质量。特别是我有个使用pymilter
的人。这是我正在运行的非常简单的代码:
#!/usr/bin/python3
"Test Milter"
import Milter
# Configuration
# List of email addresses for which incoming mail should be rejected:
EMAILS = ('mailinglist1@domain.com', 'mailinglist2@domain.com')
# Socket for milter
SOCKETNAME = 'inet:14201@127.0.0.1'
# End of Configuration
class TestMilter(Milter.Milter):
"Test Milter"
def __init__(self):
self.milter_id = Milter.uniqueID()
def envrcpt(self, to, *str):
"Reject mail if the To: address is one of the specified e-mail addresses."
if any(e in to for e in EMAILS):
return Milter.REJECT
return Milter.ACCEPT
if __name__ == "__main__":
Milter.factory = TestMilter
Milter.runmilter("test_milter", SOCKETNAME, 240)
这是pylint -E
的输出:
************* Module test_milter
test_milter.py:24:19: E1101: Module 'Milter' has no 'REJECT' member (no-member)
test_milter.py:25:15: E1101: Module 'Milter' has no 'ACCEPT' member (no-member)
我看上去很低落,根本不理解为什么pylint
会给我这个输出。我不想告诉它忽略此特定规则,因为在大多数情况下,它实际上是一个非常有用的规则。有什么想法吗?