2015-03-23 21 views
11

Mam ten kod w (wielu) moich plikach Pythona dla projektu.pylint duplikat kodu false positive

from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 
from __future__ import unicode_literals 
from pprint import pformat 

pylint skarży się, że:

==ook:2 
==eek:2 
from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 
from __future__ import unicode_literals 
from pprint import pformat (duplicate-code) 

Które natomiast prawda jest zupełnie nieistotne. Linie from __future__ [...] są tam to prevent compatibility regressions z Python 2 to Python 3. W związku z tym pylint nie powinien narzekać na to, że są podobne w różnych plikach.

Czy istnieje sposób, aby zatrzymać to robaka?

Wiem o pylint: disable=duplicate-code, ale to spowoduje wyłączenie go dla całego pliku ze względu na zakres importu. Jednak nie chcę wyłączać go dla całego pliku.

+0

To prawdopodobnie skarży się z jakiegoś powodu? Dlaczego jest to fałszywy alarm, a nie rzeczywisty duplikat kodu? – Torxed

+0

@Torxed: Pytanie edytowane z odpowiedzią. – Sardathrion

+0

Może mógłbyś umieścić te importowanie w innym pliku, na przykład 'common_imports.py', i zaimportować ten plik z' from common_imports import * 'we wszystkich innych plikach? EDYCJA: Nie, po prostu próbowałem, a to wydaje się nie działać z '__future__' import ... –

Odpowiedz

18

pylint Podobieństwa Config

Spróbuj zmienić ignore-imports w sekcji similarities swojej pylintrc config file.

Domyślnie pylintrc:

[SIMILARITIES] 

# Minimum lines number of a similarity. 
min-similarity-lines=4 

# Ignore comments when computing similarities. 
ignore-comments=yes 

# Ignore docstrings when computing similarities. 
ignore-docstrings=yes 

# Ignore imports when computing similarities. 
ignore-imports=no 
+1

Jakikolwiek sposób to zrobić z wiersza poleceń? ... – Sardathrion

+1

@Sardathrion Spróbuj zrobić "pylint/path/to/project/--ignore-imports = no' (* un tested *), ale naprawdę fajnie jest mieć dostęp do * wszystkich * opcji z pliku konfiguracyjnego. Jeśli uruchomisz 'pylint --generate-rcfile', który wydrukuje domyślne opcje, które możesz następnie zmienić. Po prostu zatrzymaj plik w katalogu swojego kodu. – tmthydvnprt

+1

To działało! Świetnie Dziękuję Ci bardzo. Naprawdę nie mogę używać '~/.pylintrc', ponieważ uruchamiamy pylint z scons ... Nie pytaj. To jest okropne.^_ ~ – Sardathrion