コード品質支援のヒントとコツ、またはコードをきれいに見せる方法
このチュートリアルの内容
このチュートリアルでは、PyCharm のコードインテリジェンス機能を使用して、Python プロジェクトでソースコードを作成する手順を順を追って説明します。PyCharm はソースコードを適切なインデント、スペース、インポートなどで完璧な形に保つのに役立ちます。実際、PyCharm 自体がコード品質ツールであることがわかります。
Python プログラミングはこのチュートリアルの範囲外です。Python 言語の詳細については、公式 Web サイト(英語)を参照してください。
始める前に
以下を確認してください:
PyCharm バージョン 5.0 以降をご使用ください。PyCharm をまだインストールされていない場合は、このページからダウンロードしてください。PyCharm をインストールするには、プラットフォームに応じた手順に従ってください。
Python プロジェクト () が作成されました。詳細については、製品ドキュメントを参照してください。
src と test_dir の 2 つのディレクトリ(または Alt+Insert)を作成しました。
プロジェクト (または Alt+Insert) の src ディレクトリと test_dir ディレクトリに Python ファイルを追加しました。ファイルの作成の詳細については、「プロジェクトを作成する」セクションを参照してください。
コードスタイル違反のハイライト
新しい Python ファイル src/Solver.py Alt+Insert を作成します。作成されたファイルはすぐに編集用に開きます。デフォルトでは、ファイルには内容がありません。これは、ファイル Solver.py が(Python ファイルの場合)何も含まないファイルテンプレートによって作成されるためです。
次に、キーワード class の入力を開始します。入力を開始するとすぐに、PyCharm は候補リストを表示してコードを補完します:

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

コロンを入力して、Enter を押します。Python コードスタイルに従って、次のステートメントはインデントされます。誤って Enter の後にスペースを押すと、コードスタイル設定に違反することになります。
PEP 8 インスペクションのチューニング
に移動し、インスペクションページで PEP 8 と入力して、PEP 8 に関連するすべてのインスペクションを検索します。デフォルトでは、PEP 8 コーディングスタイル違反はハイライトされず、PEP 8 命名規則違反は弱い警告に過ぎず、表示されません。
まず、重要度を上げてみましょう。重大度ドロップダウンリストから、警告を選択します。

変更を適用してダイアログを閉じます。ソースコードに戻りましょう。
PEP 8 ルールの追跡
次のステートメント、たとえば def demo(self,a,b,c): を入力すると、PyCharm は PEP 8 インスペクションからのメッセージを表示します。

見ることができるように、PyCharm は公式の Python スタイルガイドとして PEP 8(英語) をサポートします。インスペクション(Ctrl+Alt+S - インスペクション)のリストを調べると、PyCharm がコード上で pep8.py ツールを起動し、コードスタイル違反を特定していることがわかります。
コードインスペクションとその設定
インスペクションページをさらに注意深く参照してください。このページを開いたばかりの場合は、デフォルト設定のデフォルトのインスペクションプロファイルを参照しています。つまり、インスペクションが現在のプロジェクトのすべてのソースに適用されることを意味します。
このプロファイルを 2 つの異なるスコープに合わせてカスタマイズしてみましょう。
テストスコープでは、スペルエラーはタイプミス (緑) としてマークされる必要があります。
製品スコープでは、スペルエラーはエラー (赤) としてマークされる必要があります。
スコープの作成
まず、2 つのスコープを定義しましょう。これを行うには、メインツールバーで をクリックし、設定ダイアログでノード外観 & 振る舞いを展開し、ページスコープを開きます。次に、
をクリックし、スコープタイプローカルを選択します。
新規スコープの追加ダイアログでスコープ名 (Test) を入力し、プロジェクトツリーで、テストスコープに含めるディレクトリ test_dir を選択します。ディレクトリを含めると、パターンフィールドが自動的に入力されます。

このプロセスを繰り返して、本番スコープを作成します。
これらのスコープでインスペクションプロファイルを作成する
次に、デフォルトプロファイルのコピーを作成しましょう。これを行うには、に移動し、 をクリックして、ドロップダウンリストからプロジェクトにコピー ... を選択します。
新しい名前を付けます (例: MyProjectProfile)。この新しいプロファイルはデフォルトのプロファイルのコピーであり、同じインスペクションセットを持ちます。

この新しいプロファイルを選択した状態で、タイプミスインスペクションを見つけて変更してみましょう。
すべてのスコープボタンをクリックし、リストからテストスコープを選択します。製品スコープについても同じ手順を繰り返します。

テストスコープでは、重大度インスペクションはそのまま残されます (タイプミス)。ただし、製品スコープでは、重大度のリストからエラーを選択します。

インスペクションのカラーコードに注意してください。変更されていない場合は黒で表示されます。青色の場合は、変更されたことを意味します。
変更を適用し、ダイアログを閉じます。
これで、修正されたインスペクションプロファイルの準備ができました。次に、このプロファイルに対してコードをインスペクションしてみましょう。これを行うには、メインメニューでに移動し、ダイアログで目的のプロファイルとスコープを選択します。

それを 2 回しましょう - テストおよび本番スコープのために(それ以上のインスペクションと共有のためにインスペクション結果を保存したいなら、それらをエクスポートすることができる)。結果を調べる:

エラーのハイライト
PyCharm は、スタイル違反をコーディングするだけでなく、選択したプロファイルに応じて他のエラーもハイライトします。
例: インスペクションプロファイルに Python インスペクション未解決の参照が含まれていて、まだインポートされていないシンボルを使用している場合、PyCharm は未解決の参照に下線を引いて import 文を追加することを提案します:

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

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

PyCharm はクラスをスタブ化しました:

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

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

次のようなソースコードになっています:
しかし、これには重要な分析が欠落しています。被根号 d を分析したいと思います。これがゼロまたは正の場合、判別式と方程式の根が計算されます。被根号が負の場合、例外を発生させましょう。
コードのブロックを if 構造で囲みます。d が負でない場合に完了するステートメントを選択し、Ctrl+Alt+T を押します (またはメインメニューからを選択します)。

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

ブール式にはまったく興味がないため、選択した True を d >= 0 に変更しましょう。次に、最後の行の末尾にキャレットを置き、Enter を押します。キャレットは次の行に置かれ、if ステートメントと同じインデントが設定されます。else: と入力すると、PyCharm が期待されるインデントについて報告します。

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

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

これらは警告に過ぎず、結果には影響しません。ただし、PyCharm では、手間をかけずにこれらすべてを修正する方法が提供されています。これがコード再フォーマット機能です。ファイル全体のフォーマットを変更してみましょう。これを行うには、Ctrl+Alt+L を押します (またはメインメニューからを選択します)。

今コードを見てください - PEP 8 関連の欠点はすべてなくなりました。
フォーマットルールを自分で定義できることに注意してください。そのためには、コードスタイル設定を開き、言語 (この場合は Python) を選択して、必要な変更を加えます。

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

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

エディター設定のスマートキーの設定: Python ページで、チェックボックス型コメントをスタブに挿入するを選択する必要があります。

docstring の形式はいくつかあり、ドキュメントコメントは Python 統合ツールページで選択した形式で作成されます。
型ヒント
ドキュメントコメントは、パラメーター、戻り値、ローカル変数の予想される型を定義するために使用できます。なぜこれらすべてが必要なのでしょうか。例: demo() メソッドに渡すパラメーターの型を制御したい場合。そのためには、ドキュメントコメントに対応する情報を追加しましょう (ドキュメントコメントのコード補完に注意してください)。

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

関連ページ:
プロジェクトの作成と管理
PyCharm で何かを行う場合、プロジェクトのコンテキスト内で行うことになります。プロジェクトは、完全なソフトウェアソリューションを表す組織単位です。これは、コーディング支援、一括リファクタリング、コーディングスタイルの一貫性などの基盤として機能します。PyCharm でフォルダーを開くと、.idea サブフォルダーが追加されます。PyCharm には、プロジェクトコードスタイルやバージョン管理システムなどの内部設定が保存されます。PyCharm は、リモートホスト上のファイルの直接編集をサポー...
プロジェクトを作成する
プロジェクトを作成したら、新しい項目の追加(新しいディレクトリ、パッケージ、ファイルの作成、既存のファイルとフォルダーの追加)を開始できます。新規項目の作成:任意の拡張子を持つ以下のいずれか 1 つを実行します: プロジェクトツールウィンドウ () で、新しいファイルを作成するディレクトリまたはパッケージを選択し、メインメニューからを選択します。ディレクトリまたはパッケージを右クリックし、コンテキストメニューから新規を選択します。ディレクトリを選択し、を押します。、必要なファイルタイプを選択し...
コード補完
基本コード補完は、可視性スコープ内のクラス、メソッド、キーワードの名前を補完するのに役立ちます。PyCharm はコンテキストを分析し、現在のキャレット位置から到達可能な選択肢を提案します。候補にはライブテンプレートも含まれます。補完機能は英語以外のキーボードレイアウトでも利用できます。基本補完を呼び出すデフォルトでは、PyCharm は入力時に自動的にコード補完ポップアップを表示します。あるいは、を押すか、メインメニューからを選択することもできます。基本コード補完を 2 回呼び出すと、依存関...
インスペクション
このページを使用して、インスペクションプロファイルのカスタマイズ、インスペクション重大度レベルの構成、インスペクションの無効化と有効化、さまざまなスコープのインスペクションの構成を行います。変更されたインスペクションは青でハイライトされます。プロファイルの管理:プロファイル設定したいプロファイルの名前を選択します。適用をクリックすると、選択したプロファイルがプロジェクトのハイライトに自動的に使用されます。IDE にコピー / プロジェクトにコピー: プロジェクトまたはグローバル(IDE)レベルで選...
インスペクションプロファイル
インスペクションプロファイルには、有効なインスペクション、これらのインスペクションが分析するファイルの範囲、およびインスペクションの重大度設定に関する情報が保持されます。IntelliJ IDEA には、次の 2 種類のプロファイルがあります。グローバルですべてのプロジェクト (IDE レベル) で使用できるプロファイル IDE に保管。1 つのプロジェクト (プロジェクトレベル) でのみ使用可能なプロファイルプロジェクトに保管。レベル間でプロファイルを移動する詳細を参照してください。PyChar...
スコープ
スコープは、プロジェクト内のファイル、パッケージ、ディレクトリのサブセットであり、検索、コードインスペクションなどの特定の操作の適用を制限できます。さらに、各スコープの色分けを設定して、どのような種類のファイルを扱っているかを一度に確認できます。プロジェクトが大きくなるにつれて、スコープはさらに役立ちます。基本的なケースをカバーするいくつかの定義済みスコープがあります。さらに、プロジェクトにカスタムスコープを追加することも可能です。例: テスト用またはチーム内で担当しているファイル用にカスタムス...