*yapf とは
pythonのコードを自動整形してくれるツールです。PEP8に準拠していて生産性が上がるとのことなので、実際に使って試してみました。
ちなみに私は普段intellijを使っているので、intellijのPluginsでyapfをインストールしてみたのですが、エラーになり整形できなかったのでターミナルから実行することにしました。
*環境
- MacOS
- Python 2.7.14
- yapf 0.22.0
*参考
*インストール
pip install yapf を実行すると、バージョンが見つからない旨のエラーになったので、GitHubリポジトリからインストールしました。$ pip install git+https://github.com/google/yapf
バージョンを確認します。
$ yapf --version
yapf 0.22.0
*yapfの使い方
整形結果が出力されます。$ yapf test_fizzBuzz.py
整形結果で上書きされます。
$ yapf -i test_fizzBuzz.py
ベースのスタイルを–styleオプションで変更します。
pep8、またはgoogleを設定できます。
$ yapf --style-help --style=pep8 | grep "column_limit"
column_limitで最大文字数を変更します。
$ yapf --style-help --style='{based_on_style: google, column_limit: 120}' | grep column_limit
<整形前>
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pytest
from FizzBuzz import fizzbuzz
class TestFizzBuzz(object):
@pytest.mark.parametrize("num, expected",
[(1, "1"), (2, "2"),
(3, "Fizz")])
def test_fizzbuzz(self, num, expected):
assert expected == fizzbuzz(num)
if __name__ == '__main__':
pytest.main()
<整形後>
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pytest
from FizzBuzz import fizzbuzz
class TestFizzBuzz(object):
@pytest.mark.parametrize("num, expected", [(1, "1"), (2, "2"),
(3, "Fizz")])
def test_fizzbuzz(self, num, expected):
assert expected == fizzbuzz(num)
if __name__ == '__main__':
pytest.main()
*所感
私が普段使っているIntelliJでも自動でインデントを整形してくれますが、チーム開発では他エディタでコードを書いている人もいるので、そういったときでも標準化できる自動整形ツールは魅力的だと感じました。ターミナルで実行するのは面倒なので、IntelliJのPluginsでやれる方法がわかったらIntelliJでやりたい気持ちです。
今後も便利なツールは積極的に使って生産効率をあげていきたいです。
Sign up here with your email
ConversionConversion EmoticonEmoticon