ホーム テクノロジー 開発 非公開: コードをクリーンアップする 10 の Python リンター プラットフォーム

コードをクリーンアップする 10 の Python リンター プラットフォーム


バグは開発者にとって最悪の悪夢です。せいぜい開発中とテスト中にバグを発見するだけです。しかし、それでも、解決されるまでに何時間もイライラするようなデバッグが必要になることがあります。最悪の場合、それらは実稼働コードベースに忍び込み、そこで大混乱を引き起こし、ソフトウェアの誤動作を引き起こします。

これにより、エンドユーザーに軽度の不便が生じたり、生命を脅かす大規模な災害が発生したりする可能性があります。いずれにせよ、開発者はできるだけ早くバグを見つけて排除するよう努める必要があります。

この記事では、Python でこれを実現する linting と呼ばれる方法と、最適な Python リンター ツールとプラットフォームについて説明します。

ライニングとは何ですか? Python リンターとは何ですか?

リンティングは、スタイル上およびプログラム上のエラーを検出するために実行される自動静的コード分析の一種です。 linting という名前は、C プログラミング言語で書かれたソース コードを検査するために使用される Unix ユーティリティLintに由来しています。

長年にわたり、lint は C プログラミング言語を超えて成長し、現在では Python などの最も一般的な言語のソース コードに対しても実行されています。 Python リンターは、さまざまな Python プログラムのリンティングを実行するために使用されるツールです。

プログラミングにおいてリンターが重要なのはなぜですか?

  • lint はコードをチェックすることで、実稼働コードのバグの数を減らします。これは、より少ない労力でバグを早期に発見するのに役立つ追加の目として機能します。その結果、生産性とコードの品質が向上します。
  • また、変数や到達不能なコードなどの未使用の構成要素にフラグを付けることで、コードの効率とパフォーマンスを最適化するのにも役立ちます。これは、ソース コードのサイズと、結果として得られる分散プログラムの削減に役立ちます。
  • また、コードベースが一貫して記述されるように、タブをスペースに置き換えたり、その逆に置き換えたりすることでコードを標準化するのにも役立ちます。
  • Lint を使用すると、レビュー担当者が特定の基準がすでに満たされていることを確認できるため、コードのレビューが容易になります。これは、コードレビュー担当者が、たとえばすべての変数がスネークケースを使用しているかどうかを確認する必要がないことを意味します。

Python コードの lint チェックに使用できるツールは数多くあります。最適なツールを選択するには、ルールセットのサイズ、柔軟性、コスト、他のチーム メンバーとルールを共有する機能など、提供される機能を考慮する必要があります。

これらや他の多くの側面を考慮して、最適なツールのリストを以下に示します。

ラフ

画像-204
画像-204

Ruffは、Astral によって作成された Python リンターです。無料でオープンソースです。 Ruff は Rust で書かれているため、他のリンターと比べて信じられないほど高速です。 pip 経由で簡単にインストールでき、コードベースに 500 を超えるルールを適用します。

さらに、Ruff は Visual Studio Code、Neovim、Sublime Text などのエディターとうまく統合します。自動修正のサポートがあるため、コードを自分で書き直すことなく簡単にエラーを修正できます。

この記事の執筆時点では、Ruff のバージョンは 0.0.267 です。つまり、正確に動作しない可能性があり、バージョン 1 に到達する前に重大な変更が行われる可能性があります。

ソナー

画像-205
画像-205

Sonarlintは、IDE プラグインとして実装される無料の lint ツールです。 Visual Studio Code、PyCharm、Eclipse など、ほとんどの主要な IDE とともにインストールできます。

Python に加えて、JavaScript、Java、C++ などの他の言語もサポートします。コードを作成すると実行され、コードを修正するためのリアルタイムかつ即時のフィードバックが得られます。

Sonarlint を使用すると、SonarQube または SonarCloud と統合できるため、コード標準をチームとして共有できます。これは、コードの標準化とチームのベスト プラクティスの遵守に役立ちます。

パイタイプ

pyType は、Google によって作成され、多くの Python プロジェクトで使用されている人気のリンターです。無料で使用でき、オープンソースです。 PyType はコードをチェックして型を推測します。これは、明示的な型アノテーションを記述することなく、コードに型関連のエラーがないかチェックできることを意味します。

さらに、pyType はさまざまなファイルのコードをチェックして、正確さを確認します。 pip を使用してインストールし、コマンドライン ツールとして使用できます。

PyType は Linux 上で開発およびテストされました。したがって、Linux マシンで最適に動作します。 MacOS の場合、PyType には OSX バージョン 10.7 以降と XCode バージョン 8 以降が必要です。現在、Linux 用 Windows サブシステムで使用しない限り、Windows はサポートされていません。

コードシー

画像-206
画像-206

Codacy は、オープンソース開発者向けの無料プランを備えた有料のリンティング ツールです。セキュリティの脆弱性やエラーなど、コード内の問題を特定するのに役立ちます。

Codacy を使用すると、組織のコード標準を設定でき、これらの標準はさまざまなチームやプロジェクトに適用されます。また、コード内でどのような一般的な問題が発生するか、およびその解決方法の概要を取得することもできます。さらに、インライン注釈も提供します。

Codacy は、Git、Jira Software、Slack などのツールや、GitLab や BitBucket などの Git プロバイダーを使用してワークフローに統合することもできます。 40 以上の最も人気のあるプログラミング言語をサポートしています。

パイリント

PyLint は、人気のある Python lint ツールです。無料でオープンソースです。 PyLint は、行の長さを制限したり、変数名が規則に従うようにしたりするなどのコーディング標準を強制できます。さらに、インポートされていないモジュールなどのエラーも検出します。

構成ファイルを使用して PyLint をカスタマイズできます。 Emacs、Vim、Eclipse、Spyder、TextMate とうまく統合されます。 PyLint は、Apycot、Hudson、Jenkins などのツールを使用して自動化し、CI/CD パイプラインを構築できます。 PyLint をインストールするには、Linux ではパッケージ マネージャーを使用するか、Windows および MacOS では Pip を使用できます。

フレーク8

2023-05-16-08-17-19 のスクリーンショット
2023-05-16-08-17-19 のスクリーンショット

Flake8は、無料のオープンソース Python リンターです。 PEP8、パイフレーク、および循環複雑性を検証します。一般に非常に正確であり、誤検知の数はほとんどありません。これにより、コード全体が改善され、開発エクスペリエンスが向上します。

Flake8 を Python IDE または PyCharm や Sublime Text などのエディターに追加できます。 Flake8 は、Python 2 と Python 3 の両方をサポートしています。または、コマンド ラインから、または Python パッケージとして実行することもできます。

Flake8 はコマンドにオプションを渡すことができるため、カスタマイズ可能です。オプションを再利用するために、Flake8 ではオプションを構成ファイルに保存できます。

Black は、妥協のない独自の Python リンターです。その結果、広告は高速に決定されます。独自の内部標準を使用し、それをさまざまなプロジェクトに適用するため、決定論的です。

これにより、プロジェクトに関係なく、黒でリントされたコードが同じように見えるようになります。 Black は、Pytest、Django、SQLAlchemy などの著名なオープンソース プロジェクトで使用される最も人気のあるツールの 1 つです。

Facebook、Mozilla、Tesla などの組織は、Python プロジェクトに Black を使用しています。 Black はオープンソース プロジェクトです。

autopep8

autopep8は、Python コードの公式スタイル ガイドである PEP8 スタイル ガイドに準拠するようにコードを lint する、人気のある Python リンターです。他のコード リンターとは異なり、Autopep8 はコードの書式設定を修正することに重点を置いており、コードのロジックや構造は変更しません。

Autopep8 は、その動作をカスタマイズするためのさまざまな構成オプションも提供します。プロジェクトの要件に応じて、書式設定の指定、特定のルールの有効化または無効化、行の長さ制限の制御、その他の要素の構成を行うことができます。ほとんどのリンターと同様に、既存の IDE やエディターとうまく統合できます。

パイチェッカー

PyChecker は、到達不能なコード、未使用の変数、未割り当てのパラメーターなどの問題の特定に役立つ Python リンターです。これにより、開発者はバグをより迅速に発見し、コードの保守が容易になります。

コマンド ラインから使用できるため、1 つのコマンドでプロジェクト全体を lint するのに役立ちます。これは、ディレクトリ内のすべてのファイルを再帰的に調べて、ファイルをリンティングする可能性があるためです。 Python コード内でも使用でき、あらゆるスタイルで記述されたコードを分析できます。 PEP8 およびその他のフォーマット ガイドラインに準拠しています。

ピラマ

Pylamaは、さまざまな個別のリンターのラッパーです。 Pylint、PyFlakes、pycodestyle、Mypy などのいくつかのよく知られたリンターと統合されています。複数のリンターを使用することで、コード品質の包括的な分析を提供し、幅広いコーディング標準を適用します。

多くの場合、GitHub Actions などの継続的統合システムに統合されます。 Pylama はコマンド ラインからも動作し、ほとんどの IDE およびコード エディターと統合できます。

最後の言葉

この記事では、lint と、Python プロジェクトの lint に使用できる一般的なツールについて説明しました。 Python lint ツールは Python 開発ツールの人気の部分であり、生産性を向上させます。

次に、変換、フォーマット、検証などを行うための CSV ツールを確認してください。

「コードをクリーンアップする 10 の Python リンター プラットフォーム」についてわかりやすく解説!絶対に観るべきベスト2動画

【第10回】PythonをシンプルにスケーラブルにするRayの紹介
第695回 PythonがExcelにやってきた (2023/8/27)