2015년 11월 23일 월요일

파이썬 코드 품질 향상을 위한 PEP8 도구(Tools)

기존 블로그를 통해서 PEP8 가이드를 둘러봤다.
이번에는 PEP8을 가이드 하는 도구에 대해서 소개한다.

pep8와 autopep8

  • pep8
    • https://pypi.python.org/pypi/pep8
    • 코드 리뷰를 통해서 작성자에게 적절한 pep8 규칙을 가이드 한다.
  • autopep8
    • https://pypi.python.org/pypi/autopep8/
    • pep8을 기반으로 자동으로 코드를 수정한다.

* 각 도구는 상세한 옵션들을 제공한다.
* 본문에서는 간단한 사용 예제만 다룬다.

pep8 사용 예제

Mark$ pep8 --show-source sample.py
b.py:8:1: E302 expected 2 blank lines, found 1
def get_label_value(dict_):
^
b.py:21:1: E302 expected 2 blank lines, found 1
def is_label(dict_):
^
b.py:44:46: E231 missing whitespace after ','
        for next_obj in obj.find_all(RULE_ALL,recursive=False):
                                             ^
b.py:49:45: E231 missing whitespace after ','
                GLOBAL_LIST.append((next_lev,get_label_value(next_obj.attrs)))
                                            ^
b.py:58:1: E302 expected 2 blank lines, found 1
def main(file_name):
^
b.py:67:27: E231 missing whitespace after ','
    finder(file_name + '_',root)
                          ^
b.py:72:5: E265 block comment should start with '# '
    #RULE_DATA_FORMAT = re.compile('xsd:choice|xsd:restriction|xsd:sequence')
    ^
b.py:85:50: E231 missing whitespace after ','
    df = pd.DataFrame(GLOBAL_LIST,columns=['dist','name'])
                                                 ^
b.py:87:80: E501 line too long (82 > 79 characters)
    df['level'] = df['dist'].apply(lambda i: len(i.split('_')[-1].split('.')) - 1)
                                                                               ^
b.py:88:5: E301 expected 1 blank line, found 0
    def set_tag(name):
    ^
b.py:89:32: E701 multiple statements on one line (colon)
        if name.startswith('~'): return 'ref'
                               ^
b.py:94:40: E231 missing whitespace after ','
    df = df[['file','dist','name','tag','level']]

autopep8 사용 예제

Mark$ autopep8 --in-place --aggressive --aggressive sample.py

* --in-place 옵션을 통해서 sample.py 본문의 pep8 권고사항들이 바로 적용된다.
* 확인 차원에서 autopep8 사용 이후에 pep8을 돌려 보자.

0 개의 댓글:

댓글 쓰기