PyCharm 2020.3 ヘルプ

コード品質支援のヒントとコツ、またはコードをきれいに見せる方法

このチュートリアルの内容

このチュートリアルでは、PyCharm のコードインテリジェンス機能を使用して、Python プロジェクトでソースコードを作成する手順を順を追って説明します。PyCharm はソースコードを適切なインデント、スペース、インポートなどで完璧な形に保つのに役立ちます。実際、PyCharm 自体がコード品質ツールであることがわかります。

Python プログラミングはこのチュートリアルの範囲外です。Python 言語の詳細については、公式 Web サイト(英語)を参照してください。

始める前に

以下を確認してください:

  • PyCharm バージョン 5.0 以降を使用しています。それでも PyCharm をお持ちでない場合は、このページからダウンロードしてください。PyCharm をインストールするには、プラットフォームに応じて、指示に従ってください。詳細については、製品のドキュメントを参照してください。

  • Python プロジェクト(ファイル | 新規プロジェクト...)が作成されました。詳細については、製品のドキュメントを参照してください。

  • srctest_dir の 2 つのディレクトリ(ファイル | 新規または Alt+Insert )を作成しました。

  • プロジェクト(ファイル | 新規または Alt+Insert )の src および test_dir ディレクトリに Python ファイルを追加しました。ファイルの作成方法については、プロジェクトへの投入を参照してください。

コードスタイル違反のハイライト

新しい Python ファイル src/Solver.py Alt+Insert を作成します。作成されたファイルはすぐに編集用に開きます。デフォルトでは、ファイルには内容がありません。これは、ファイル Solver.py が(Python ファイルの場合)何も含まないファイルテンプレートによって作成されるためです。

次に、キーワード class の入力を開始します。入力を開始するとすぐに、PyCharm は候補リストを表示してコードを完成させます:

Py code1

(詳細は、製品マニュアルのコード補完ページを参照してください)。

赤い曲線は、次に予想されるエントリを示します。この場合、これは予想される識別子です。クラス名 Solver を入力します。赤い曲線はクラス名の後に移動します。この曲線の上にマウスポインターを置くと、エラーの説明(「コロンが必要です」)が表示されます。また、右側のガターの赤いエラーストライプに注意してください。同じエラーを示しています。

Py colon expected

OK、コロンを入力し、Enter を押します。Python コードスタイルによれば、次の文はインデントされています。 Enter の後で偶然スペースを押すと、コードスタイルの設定に違反します。

PEP8 インスペクションのチューニング

しかし、デフォルトでは、これらの違反は弱い警告であるため、見えません。まず、重要性を高めましょう。メインツールバーの Icons general settings をクリックし、Settings/ Preferences ダイアログのインスペクションページに PEP8 と入力して PEP8 関連のインスペクションをすべて検索し、Severity ドロップダウンリストから警告を選択します:

Py inspection severity

変更を適用し、ダイアログを閉じます。さあ、ソースコードに戻ってみましょう。

PEP8 ルールの追跡

今 PyCharm は最高のものを示しています ! あなたのコードスタイルの完全性を保護するために、注意を要するものです。インデントされたスペースがハイライトされ、def demo(self,a,b,c): などの次のステートメントを入力すると、PyCharm は PEP8 インスペクションからのメッセージを表示します。

Py inspection pep8

見ることができるように、PyCharm は公式の Python スタイルガイドとして PEP8(英語) をサポートします。インスペクション(Ctrl+Alt+S - インスペクション)のリストを調べると、PyCharm がコード上で pep8.py ツールを起動し、コードスタイル違反を特定していることがわかります。

コードインスペクションとその設定

インスペクションをさらに注意深く参照してください。このページを開いたばかりの場合は、デフォルト設定のデフォルトインスペクションプロファイルが表示されます。つまり、インスペクションは現在のプロジェクトのすべてのソースに適用されます。

このプロファイルを 2 つの異なるスコープに合わせてカスタマイズしてみましょう。

  • テストスコープでは、スペルミスはタイプミスとしてマークする必要があります (緑)

  • プロダクションスコープでは、スペルミスはエラー(赤色)としてマークする必要があります。実際にはタイプミスのコードを生成できますか?

その方法は次のとおりです...

スコープの作成

まず、2 つのスコープを定義しましょう。これを行うには、メインツールバーの Icons general settings をクリックし、設定 / 環境設定ダイアログボックスでノード外観および振る舞いを展開し、ページスコープを開きます。次に Icons general add をクリックし、スコープタイプローカルを選択します。

新規スコープの追加ダイアログボックスでスコープ名(Test)を入力し、プロジェクトツリーで Test スコープ test_dir に含めるディレクトリを選択します。ディレクトリを含めると、パターンフィールドは自動的に入力されます。

Py scope test

このプロセスを繰り返して、本番スコープを作成します。

これらのスコープでインスペクションプロファイルを作成する

次に、デフォルトのプロファイルのコピーを作成してみましょう(このプロファイルは編集可能ですが... 安全のために):

Py copy profile

MyProjectProfile などの新しい名前を付けます。この新しいプロファイルはデフォルトのコピーであり、インスペクションの同じセットを持っています。

この新しいプロファイルを選択して、スペリングインスペクションを探して変更しましょう。Spelling インスペクションを見つけるには(すでにこれまでに行っています)、検索エリアに spel と入力してください。

次は何ですか? すべてのスコープボタンをクリックし、リストから Test スコープを選択します。本番スコープで同じ操作を繰り返します

Py spel test scope

範囲「テスト」では、インスペクションの重大度はそのままです(タイプミス)。ただし、スコープは「Production」です。 "エラー" を選択します。重大度のリストから:

Py spel production scope

インスペクションのカラーコードに注意してください。変更されていない場合は黒で表示されます。青色の場合は、変更されたことを意味します。

変更を適用してダイアログを閉じる...

変更されたインスペクションプロファイルは準備ができています。その名前はプロジェクトのデフォルト (コピー) で、テストおよび本番スコープのスペリングインスペクションの設定が異なります。次に、このプロファイルに対してコードをインスペクションしましょう。これを行うには、メインメニューでコード | コードのインスペクションを選択し、ダイアログボックスで希望するプロファイルとスコープを選択します。

Py inspect code against scope

テストスコープと本番スコープの場合は、2 回実行します(さらに調査および共有するためにインスペクションの結果を保存する場合は、エクスポートできます)。結果を調べる:

Py spel inspection

エラーのハイライト

PyCharm は、スタイル違反をコーディングするだけでなく、選択したプロファイルに応じて他のエラーもハイライトします。

例: インスペクションプロファイルに Python インスペクション未解決の参照が含まれていて、まだインポートされていないシンボルを使用している場合、PyCharm は未解決の参照に下線を引いて import 文を追加することを提案します:

Py import

製品のドキュメントを参照してください。

ソースコードの生成

PyCharm は自動的にコードを生成する多くの可能性を提供します。自動生成機能については、製品資料で調べることができます。主なコード生成手順を調べてみましょう。それには、Solver.py ファイルの内容をすべて削除して、最初からやり直すだけです。

まず、クラスのインスタンスを作成します。

Py create instance of a class

次に、Alt+Enter を押して、インテンションアクションクラス 'Solver' を作成を選択します。

Py create class intention action

すばらしいです ! PyCharm はクラスをスタブしています:

Py create class stub

次に、クラスインスタンスにメソッドを追加しましょう。これを行うには、クラスインスタンスの後にドットを入力し、メソッド名を入力します。この方法はまだ存在せず、PyCharm は次の方法を提案しています:

Py create method in class

手作業をしましょう - ソースコードを入力してください。判別式を計算するときは、平方根を抽出する必要があります。ライブラリ math に専用の機能 sqrt がありますが、まだインポートされていません。それでは、PyCharm がどのようにそれに対処しているかを見てみましょう。 Alt+Enter を押してインポート ' 数学 ' を選択します:

Py create import

次のようなソースコードになっています:

import math class Solver(object): def demo(self,a,b,c): d = b ** 2 - 4 * a * c disc = math.sqrt(d) root1 = (- b + disc) / (2 * a) root2 = (- b - disc) / (2 * a) print (root1, root2) return root1, root2

しかし、いくつかの重要な分析が欠落しています。ラジカル d を分析したいと思います。それがゼロまたは正の場合、判別式および方程式のルートが計算されます。radicand が負の場合は、例外を発生させましょう。PyCharm がこの作業をどのように完了できますか?

コードブロックを if 構造で囲みましょう。 d が負でないときに完了するステートメントを選択し、Ctrl+Alt+T を押します(またはメインメニューでコード | 囲むを選択します)。

Py surround code

候補リストから if オプションを選択します。ご覧のとおり、PyCharm は自動的に if True: を追加し、選択した行をインデントします。

Py surround added

ブール式にはまったく興味がありませんため、選択した Trued >= 0 に変更しましょう。次に、最後の行の最後にキャレットを置き、Enter を押します。キャレットは if ステートメントと同じインデントで次の行に置かれます。 else: clause here と入力し、期待されるインデントに関する PyCharm レポートを参照してください:

Py else indent expected

再度 Enter を押すと、キャレットはインデントされた位置にあります。PyCharm の強力な自動コード補完を使用して、例外式を入力できます:

Py completing code

コードを整形

Solver.py ファイルをもう一度見てみましょう。右のガターには黄色の縞模様が見えます。ストライプの上にマウスポインタを置くと、PyCharm はコード内の対応する問題の説明を表示します:

Py warnings

良いニュースは、彼らが警告であり、結果に影響を与えないことです。悪い知らせはあまりにも多く、それぞれを一つずつ修正することはできません。そんなにソースコードを素敵で綺麗にすることは可能でしょうか?

PyCharm は言う - はい。これはコードの再フォーマット機能です。それでは、ファイル全体のフォーマットを変更してみましょう。これを行うには、Ctrl+Alt+L を押します(またはメインメニューでコード | コードの整形を選択します)。

Py reformat code done

コードを見てください - PEP8 関連の欠点はすべて消えています。

自分でフォーマットルールを定義できることに注意してください。これを行うには、コードスタイルの設定を開き、言語(この場合は Python)を選択して、必要な変更を行います。

Py reformat code settings

ドキュメントコメントの追加

OK をクリックすると、フォーマットは修正されますが、まだいくつかのストライプが残っています。避けられない黄色のバルブは、docstring コメントを追加する可能性を示しています:

Py intention docstrings

この提案を選択し、追加された特定のパラメーターの docstring コメントを参照してください:

Py intention docstrings done

エディター設定のスマートキーページで、チェックボックスドキュメントのコメント文字列に型プレースホルダを挿入するを選択する必要があります。

Py insert type placeholder setting

いくつかのドキュメント文字列フォーマットがあり、ドキュメントコメントは Python 統合ツールページで選択したフォーマットで作成されます。望むなら、ドキュメント文字列フォーマットを、たとえば、Epytext またはプレーンテキストに変更することができます。

型ヒント

ドキュメントコメントは、予想される型のパラメーター、戻り値、またはローカル変数を定義するために使用できます。なぜそれをすべて必要としますか? 例: demo() メソッドに渡すパラメーターの種類を制御しておきたい。これを行うには、対応する情報をドキュメントのコメントに追加してみましょう(ちなみに、コード補完はドキュメントのコメントに気を付けてください):

Py docstrings completion

次に、メソッド呼び出しを見ると、間違ったパラメーターが PyCharm のインスペクションタイプチェッカーによってハイライトされていることがわかります。

Py type checker

型ヒントの詳細については、PyCharm のドキュメントを参照してください。

関連ページ:

入門

このサイトのメニューやアクション名表記は日本語です。PyCharm を日本語化するには、日本語言語パックのインストールを参照してください。PyCharm は、Python 開発者に幅広い必須ツールを提供する専用の Python 統合開発環境(IDE)であり、緊密に統合されて、生産的な Python、Web、およびデータサイエンス開発のための便利な環境を作成します。最適な PyCharm を選択してください:PyCharm には 3 つのエディションがあります。Community(無料およびオープ...

プロジェクトの作成と管理

VCS を介してプロジェクト設定を共有する:この情報は、Git および Mercurial に有効です。別のバージョン管理システムを使用している場合は、プロジェクトを手動で共有する方法について、バージョン管理システムでプロジェクトを管理する方法を参照してください。プロジェクト設定は、.idea フォルダーにある一連の XML ファイルとしてプロジェクトディレクトリに保存されます。このフォルダーには、バージョン管理下に置くべきではないユーザー固有の設定と、チームで作業している開発者間で通常共有され...

プロジェクトへの投入

さまざまなタイプ(ディレクトリ、パッケージ、ファイル)の新しい要素を作成して、プロジェクトに取り込みます。PyCharm は、対応する機能にアクセスする次の代替手段を提案しています。メインメニューから。コンテキストメニューコマンド。キーボードショートカット。その結果、作成する要素のタイプを選択する新規メニューが表示されます。PyCharm 固有の要素を生成するには、Django セクションを参照してください。新規ファイルを作成する以下のいずれか 1 つを実行します: プロジェクトツールウィンドウ...

ファイルテンプレート

ファイルテンプレートは、作成する新しいファイルのデフォルトコンテンツの仕様です。作成するファイルのタイプに応じて、テンプレートは、そのタイプのすべてのファイルで期待される初期コードとフォーマットを提供します(業界または言語の標準、企業ポリシー、またはその他の理由による)。PyCharm は、新しいファイルを作成するときに提案される、サポートされているすべてのファイルタイプの定義済みテンプレートを提供します。推奨されるファイルタイプのセットは、モジュールと構成、プロジェクトツールウィンドウの現在の...

コード補完

このセクションでは、コーディングプロセスのスピードアップを可能にするコンテキスト対応コード補完のさまざまなテクニックについて説明します。基本補完:基本コード補完は、可視性スコープ内のクラス、メソッド、キーワードの名前を完成させるのに役立ちます。コード補完を呼び出すと、PyCharm はコンテキストを分析し、現在のキャレット位置から到達可能な選択肢を提案します(提案にはライブテンプレートも含まれます)。コード補完はカスタムファイルタイプで使用できます。ただし、PyCharm はそのようなファイル...

インスペクション

このページを使用して、インスペクションプロファイルのカスタマイズ、インスペクション重大度レベルの構成、インスペクションの無効化と有効化、および異なるスコープのインスペクションの構成を行います。変更されたインスペクションは青でハイライトされます。プロファイルの管理:プロファイル設定したいプロファイルの名前を選択します。適用をクリックすると、選択したプロファイルがプロジェクトのハイライトに自動的に使用されます。IDE にコピー / プロジェクトにコピー: プロジェクトまたはグローバル(IDE)レベルで...