PyCharm 2019.2ヘルプ

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

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

このチュートリアルでは、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 svg をクリックし、設定 / 環境設定ダイアログのインスペクションページに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 svg をクリックし、設定/環境設定ダイアログボックスでノード外観および振る舞いを展開し、ページスコープを開きます。次に icons general add svg をクリックし、スコープタイプローカルを選択します。

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

py scope test

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

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

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

py copy profile

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

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

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

py spel test scope

"Test" のスコープでは、インスペクションの重大度はそのままです(typo): ただし、スコープ "Production" では重大度のリストから "Error" を選択します:

py spel production scope

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

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

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

py inspect code against scope

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

py spel inspection

エラーの強調表示

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

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

py import

製品の資料を参照してください。

Hectorの助けを借りてエラーの強調表示を変更することができます。

ソースコードの生成

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ドキュメントを参照してください。

最終更新日: 2019年11月6日

関連ページ:

入門

PyCharmはPython専用の開発統合環境(IDE)であり、Python開発者に幅広い不可欠なツールを提供し、密接に統合されて生産的なPython、Web、およびデータサイエンスの開発に便利な環境を作成します。PyCharm の使い方:PyCharm のエディションPyCharmには、Profe...

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

PyCharmで何をしても、プロジェクトのコンテキストでそれを行います。プロジェクトは、完全なソフトウェアソリューションを表す組織単位です。これは、コーディング支援、一括リファクタリング、コーディングスタイルの一貫性などの基盤として機能します。PyCharmでフォルダーを開くと、.ideaサブフォル...

コード補完

このセクションでは、コーディングプロセスのスピードアップを可能にするコンテキスト対応コード補完のさまざまなテクニックについて説明します。基本補完:基本コード補完を使用すると、可視性の範囲内でクラス、メソッド、およびキーワードの名前を完成させることができます。コード補完を起動すると、PyCharmはコ...

インスペクション

WindowsとLinux用のmacOS用このページを使用して、インスペクションプロファイルのカスタマイズ、インスペクションの重大度の設定、インスペクションの無効化と有効化、およびさまざまなスコープに対するインスペクションの設定を行います。このページは次の領域に分かれています。プロファイルを管理する...

プロファイルを設定する

導入:PyCharmでは、コード検証分析の設定を行い、インスペクションプロファイルとして保存することができます。既存のインスペクションプロファイル(デフォルトプロファイルを含む)をカスタマイズし、新しいプロファイルを作成することができます。また、インスペクションプロファイルを共有、インポート、および...

スコープ

スコープは、プロジェクト内のファイル、パッケージ、ディレクトリーのサブセットであり、特定の操作(検索、コードインスペクションなど)の適用を制限できます。さらに、各スコープの色を設定して、一度はどんな種類のファイルを扱っているか。プロジェクトが大きくなるにつれて、スコープはさらに役立ちます。基本的なケ...