Visual Studio Code 用の MSSQL 拡張機能で Transact-SQL を書式設定する

一貫性のある書式設定により、特に複数のユーザーが同じコードベースに貢献する場合に、Transact-SQL (T-SQL) の読み取り、確認、保守が容易になります。 Visual Studio CodeのMSSQL拡張機能には、オンデマンドで実行したり、セーブ時の自動フォーマットを設定したり、Visual Studio Codeの設定でカスタマイズできる組み込みSQLフォーマッター(プレビュー)が含まれています。

MSSQL拡張機能のT-SQLフォーマット機能は、T-SQLを解析し抽象構文木に基づいてスクリプトを生成するオープンソースの.NETライブラリScriptDOMに基づいて構築されています。

オンデマンド形式

どのエディタウィンドウでもT-SQLをフォーマットできます。 フォーマッターは文書全体、または選択したテキストだけに動作します。

T-SQLをオンデマンドでフォーマットするには、以下のいずれかの方法を用いてください。

  • コンテキストメニュー:T-SQLエディタのウィンドウで右クリックし、「 ドキュメントフォーマット 」または 「フォーマット選択」を選択します。

  • コマンドパレット: Document Format または Format Selection を実行する。

  • キーボードショートカット:ドキュメントフォーマットは、WindowsとLinuxではShift+Alt+F、macOSではShift+Option+Fを押してください。 フォーマットの選択には、Windows と Linux では +KCtrl+F を、macOS では Cmd+KCmd+F を押してください。

保存時の書式

Visual Studio Codeでは、標準のエディタ設定が保存時にフォーマットを制御しており、専用のMSSQLフォーマタ設定ではありません。

ファイルを保存するたびにT-SQLを自動的にフォーマットするために、Visual Studio Code settings.jsonファイルの以下の設定を使ってください。

{
  "[sql]": {
    "editor.formatOnSave": true
  }
}

書式設定オプションを構成する

Visual Studio Code設定UIやユーザー、ワークスペースsettings.jsonでフォーマットを設定してください。

設定エディターで「 Mssql>Format 」を検索して利用可能なオプションを確認してください。 settings.jsonでは対応するmssql.format.*設定を使いましょう。

  • プレビューフォーマッターはデフォルトで有効です。 オプションは mssql.format.options.* 名前空間を使用しています。

  • プレビューフォーマットが有効になっても、既存の5つのフォーマット設定は引き続き利用可能です。 プレビューフォーマッターは mssql.format.options.* 設定を追加します。

Visual Studio Code設定エディターのSQLフォーマッタ設定のスクリーンショットです。

サポートされている設定

テーブルには既存のフォーマター設定が一覧で、その後にプレビューフォーマッターの設定が続きます。

既存のフォーマッター設定

Setting タイプ Default Description
mssql.format.alignColumnDefinitionsInColumns bool false 列の定義を列に揃えましょう。
mssql.format.datatypeCasing 列挙型 none データ型は uppercaselowercase、または非フォーマットのまま none としてフォーマットしてください。
mssql.format.keywordCasing 列挙型 none キーワードは uppercaselowercasenone (フォーマットなし)としてフォーマットしてください。
mssql.format.placeCommasBeforeNextStatement bool false リストの各項目の先頭にはコンマを置きましょう。例えば , mycolumn2のように、最後に置くのではなく、 mycolumn1,のように。
mssql.format.placeSelectStatementReferencesOnNewLine bool false 参照は SELECT 文の中の別々の行に配置します。 SELECT C1, C2 FROM T1では、C1とC2はそれぞれ別の路線にあります。

プレビューフォーマッター設定

これらの mssql.format.options.* 設定は、プレビューフォーマットを有効にすると既存のフォーマット設定に加えて追加されます。

General

Setting タイプ Default Description
mssql.format.enablePreviewFormatter bool true SQLフォーマッター(プレビュー)を使ってください。
mssql.format.showParseErrorNotification bool true フォーマッターがT-SQLを完全に解析できない場合は通知を表示します。
mssql.format.options.sqlVersion 列挙型 sql170 T-SQLバージョンは、解析やフォーマット済みスクリプトの生成に使われていました。
mssql.format.options.sqlEngineType 列挙型 all データベース エンジンタイプ フォーマット済みスクリプトの解析および生成に使用されます。 有効な値は、 allstandalone、および sqlAzureです。

位置合わせ

Setting タイプ Default Description
mssql.format.options.alignClauseBodies bool true FROMWHEREGROUP BY、および同様の句の本体を配置します。
mssql.format.options.alignColumnDefinitionFields bool true 名前、型、制約などの列定義フィールドを配置します。
mssql.format.options.alignSetClauseItem bool true SET ステートメント内の UPDATE 句項目を整列します。

経路

Setting タイプ Default Description
mssql.format.options.allowExternalLanguagePaths bool true 外部言語コンテンツがファイルパスを使えるようにします。
mssql.format.options.allowExternalLibraryPaths bool true 外部ライブラリのコンテンツがファイルパスを使用できるようにします。

Formatting

Setting タイプ Default Description
mssql.format.options.asKeywordOnOwnLine bool true ASを独自の行に配置します。
mssql.format.options.keywordCasing 列挙型 uppercase キーワードの大文字/小文字の表記スタイル。 有効な値は、 uppercaselowercase、および pascalCaseです。
mssql.format.options.preserveComments bool true 書式設定中にコメントを保持します。
mssql.format.options.numNewlinesAfterStatement int 1 各文の後に折行数が 0 から 5まであります。

インデント

Setting タイプ Default Description
mssql.format.options.indentSetClause bool false SET ステートメント内の UPDATE 句をインデントします。
mssql.format.options.indentViewBody bool false 本文をVIEW字下げします。

複数行

Setting タイプ Default Description
mssql.format.options.multilineInsertSourcesList bool true INSERT ソースを複数行として扱います。
mssql.format.options.multilineInsertTargetsList bool true INSERT 列を複数行で表示します。
mssql.format.options.multilineSelectElementsList bool true SELECT 列を複数行で表示します。
mssql.format.options.multilineSetClauseItems bool true SET 項目を複数行として表示します。
mssql.format.options.multilineViewColumnsList bool true VIEW 列を複数行で表示します。
mssql.format.options.multilineWherePredicatesList bool true WHERE 述語を複数行として扱います。

新しい行

Setting タイプ Default Description
mssql.format.options.newLineBeforeCloseParenthesisInMultilineList bool true 複数行リストの閉じ括弧の前に新しい行を付けてください。
mssql.format.options.newLineBeforeFromClause bool true FROM 句の前に改行。
mssql.format.options.newLineBeforeGroupByClause bool true 節の前に新しい行 GROUP BY
mssql.format.options.newLineBeforeHavingClause bool true HAVING 句の前に改行。
mssql.format.options.newLineBeforeJoinClause bool true 節の前に新しい行 JOIN
mssql.format.options.newLineBeforeOffsetClause bool true OFFSET 節の前に改行。
mssql.format.options.newLineBeforeOpenParenthesisInMultilineList bool false 複数行リストの開口括弧の前に新しい行が入っています。
mssql.format.options.newLineBeforeOrderByClause bool true ORDER BY 句の前に改行。
mssql.format.options.newLineBeforeOutputClause bool true OUTPUT 節の前に改行。
mssql.format.options.newLineBeforeWhereClause bool true 節の前に新しい行 WHERE
mssql.format.options.newLineBeforeWindowClause bool true WINDOW 句の前に改行。
mssql.format.options.newlineFormattedCheckConstraint bool false Newlineは制約 CHECK フォーマット。
mssql.format.options.newLineFormattedIndexDefinition bool false 改行形式のインデックス定義。

Spacing

Setting タイプ Default Description
mssql.format.options.spaceBetweenDataTypeAndParameters bool true 例えば、データ型と括弧の間のスペース、 VARCHAR (255)
mssql.format.options.spaceBetweenParametersInDataType bool true データ型のパラメータ間のスペース。

設定ファイルの例

{
  "mssql.format.options.keywordCasing": "lowercase",
  "mssql.format.options.alignClauseBodies": false,
  "mssql.format.options.numNewlinesAfterStatement": 2,
  "[sql]": {
    "editor.formatOnSave": true
  }
}

デフォルトのフォーマッターを設定する

MSSQL拡張をデフォルトに設定するには、「Configure Default Formatter...」を選択してください>SQL Server(mssql)をsettings.jsonに、または以下の構成を追加してください:

{
  "[sql]": {
    "editor.defaultFormatter": "ms-mssql.mssql"
  }
}