2013-11-21 28 views
0

作爲一名python初學者,我一直試圖讓IronPython下運行的pylint運行一些腳本。我已經設法安裝並報告了一些結果,但是我每次運行它時都會收到一個AssertionError,並且在多個腳本中也是如此。如何解決pylint中的AssertionError問題?

我使用默認的rcfile運行它,除了disable=C0103,C0301,C0303之外。

輸出:

<string>:1: DeprecationWarning: object.__new__() takes no parameters 

************* Module testscript 
C: 1, 0: Missing module docstring (missing-docstring) 
C: 11, 0: Missing function docstring (missing-docstring) 
C: 19, 0: Missing function docstring (missing-docstring) 
R: 19, 0: Too many local variables (24/15) (too-many-locals) 
Traceback (most recent call last): 
    File "C:\Program Files (x86)\IronPython 2.7\Scripts\pylint", line 3, in <module> 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\__init__.py", line 21, in run_pylint 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\lint.py", line 982, in __init__ 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\lint.py", line 578, in check 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\lint.py", line 664, in check_astroid_module 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\utils.py", line 662, in walk 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\utils.py", line 662, in walk 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\utils.py", line 662, in walk 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\utils.py", line 662, in walk 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\utils.py", line 659, in walk 
    File "C:\Program Files (x86)\IronPython 2.7\lib\site-packages\pylint\checkers\format.py", line 309, in visit_default 
AssertionError: If() 

與線309 visit_default功能所指出的,如果它的使用範圍:

@check_messages('C0321' ,'C03232', 'C0323', 'C0324') 
def visit_default(self, node): 
    """check the node line number and check it if not yet done""" 
    if not node.is_statement: 
     return 
    if not node.root().pure_python: 
     return # XXX block visit of child nodes 
    prev_sibl = node.previous_sibling() 
    if prev_sibl is not None: 
     prev_line = prev_sibl.fromlineno 
309>else: 
     prev_line = node.parent.statement().fromlineno 
    line = node.fromlineno 
    assert line, node 
    if prev_line == line and self._visited_lines.get(line) != 2: 
     # py2.5 try: except: finally: 
     if not (isinstance(node, nodes.TryExcept) 
       and isinstance(node.parent, nodes.TryFinally) 
       and node.fromlineno == node.parent.fromlineno): 
      self.add_message('C0321', node=node) 
      self._visited_lines[line] = 2 
     return 
    if line in self._visited_lines: 
     return 
    try: 
     tolineno = node.blockstart_tolineno 
    except AttributeError: 
     tolineno = node.tolineno 
    assert tolineno, node 
    lines = [] 
    for line in xrange(line, tolineno + 1): 
     self._visited_lines[line] = 1 
     try: 
      lines.append(self._lines[line].rstrip()) 
     except KeyError: 
      lines.append('') 
    try: 
     msg_def = check_line('\n'.join(lines)) 
     if msg_def: 
      self.add_message(msg_def[0], node=node, args=msg_def[1]) 
    except KeyError: 
     # FIXME: internal error ! 
     pass 

回答

1

這可能是pylint的問題,或者說在pylint的的支持IronPython的的。

IronPython是一個Python實現,但與其他實現方式大不相同,因爲它通常不會與Python標準庫一起使用。

您可以嘗試將此問題提交到logilab項目郵件列表,並查看他們是否有任何建議。

+0

這似乎很明顯是一個支持IronPython的pb,更確切地說是關於AST的行號。您應該在https://bitbucket.org/logilab/pylint/issues上添加一個問題,包括IronPython版本號和導致此錯誤的最小可能的代碼段。 – sthenault