質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.44%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1378閲覧

Windows10で複数のC++ファイルを一括で自動整形したい

kamozaka

総合スコア12

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2023/05/25 12:22

編集2023/05/26 00:46

Windows10で、C++の複数のソースコードファイルに対して、コードの自動整形を一括で行いたいと考えています。
この場合、「LLVMを導入して、その付属機能であるclang-formatを使用する」のが最適解なのか?が知りたいです。

試したこと

まず、自分が使用しているVisual Studio Community 2022について調べた所、下記のことが分かりました。

・「Ctrl+K Ctrl+D」で「現在開いているファイルの自動整形」を実行できる。
・[オプション]>[テキスト エディター]>[C/C++]>[コード スタイル]>[書式設定]に
「ClangFormat サポートを有効にします」というチェックボックス(デフォルトはON)があるので、clang-formatと同じルールを使用した自動整形ができる模様。
・自動整形ツールの中ではclang-formatが最もメジャーであるらしい。

1ファイルに対して実行したところ良さそうだったので、この自動整形を複数のファイルに対して一括で適用したいと考えたのですが、その方法が見つかりませんでした。

ではclang-formatを導入すべきなのか?と考え、下記の情報を得ました。

・clang-formatはLLVMに付属している機能であるため、LLVMの導入が必要。
・「clang-formatを導入すれば複数ファイル一括自動整形が可能になるのか」という肝心な点は、ヘルプらしき文書出典)に可能であると書かれているように見える:

If <file>s are given, it reformats the files. If -i is specified together with <file>s, the files are edited in-place. Otherwise, the result is written to the standard output.

本当に必要ならばLLVMの導入を行って試そうと思いますが、やりたいことに対して少し大掛かりな印象を受けたので、実践の前に一旦識者の方に「この方向性で良いのか」をご教示頂きたいと考えました。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

使ったことありませんがFormat All FilesというVSのextensionで実現できるようです。

  • 対象はディレクトリではなくソリューションで指定?
  • 対応バージョンは2019までしか記載がないので2022で使えるか?

といった懸念点はありますが、試してみてはいかがでしょうか。

参考:Formatting - at once - all the files in a Visual Studio project

追記

Support for VS2022 #16にてフォークで2022対応したものが公開されているようです。
FormatAllFilesPlus

投稿2023/05/26 00:19

編集2023/05/26 05:33
can110

総合スコア38317

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamozaka

2023/05/26 05:31 編集

素晴らしい情報をありがとうございます。 「Format All FilesをVSC2019で使用する」ことで解決しました。 LLVMの導入という、大掛かり(?)なことをせずに済んだので助かりました。 また、extension(拡張機能)についてよく知らなかったので、学習する良い機会になりました。 Format All Filesの整形ルールは、前述のVSCの [オプション]>[テキスト エディター]>[C/C++]>[コード スタイル]>[書式設定] に依存することを確認できたので、デフォルトのままだったそれを自分好みの設定にした上で実行しました。 > 対応バージョンは2019までしか記載がないので2022で使えるか? 仰る通り、VSC2022では使用不能でした。 私はVSC2019もたまたま既にインストール済みだったため、自動整形だけはそちらで行うことで解決しました。 この方法のデメリットは、VSC2022で設定した整形ルール(書式設定)をVSC2019に流用できない(?)ので、 それぞれ個別に設定する必要があることです。 少し面倒でしたが、手作業で両者を同じ設定にしました。 (微妙にデフォルト値が変化していたりして、MSの中の人の思想の変化が感じられて面白かったです。) > 対象はディレクトリではなくソリューションで指定? 私の用途ではソリューション毎で十分でしたが、調べてみました。 VSC2019のソリューションエクスプローラ上で、何を右クリックすれば「Format All Files」が選択肢に出てくるかをチェックした所、 「ソリューション」「プロジェクト」「複数ファイル」「単一ファイル」の全てで可能でした。 ディレクトリを指定する方法はないものと思われますが、ソリューションへのファイル追加は多数であっても容易なので、 自動整形用にダミーのソリューションを作ってやりさえすれば同等のことが可能でしょう。 当面は「一括自動整形したい時だけVSC2019」で困らなそうではありますが、 今後「新しいVSでないと設定できない整形ルール」(現状では無い)ができたりすると不便を感じるかも知れません。 なので、VSC2022移行で普通に実行可能になると嬉しいですね。
can110

2023/05/26 05:34

詳細な情報ありがとうございます。 もう少し調べてみたら別の人がフォークしたものが公開されているようです。 回答に追記しています。
kamozaka

2023/05/26 05:48

> もう少し調べてみたら別の人がフォークしたものが公開されているようです。 なんと、あったのですか! ありがとうございます。では後ほど使ってみます。 既にMarketplaceにあるのなら、 VSC2022の「拡張機能の管理」で「Format All Files」でダメ元で検索してみた時に何故ヒットしなかったんだ? と思ったら、フォーク版は「FormatAllFilesPlus」と半角スペースがなくなっているためでした。 気付いてもらいにくい名前で損しちゃってますねぇ…。
kamozaka

2023/05/26 10:03

「VSC2022+FormatAllFilesPlus」を導入し、「VSC2019+Format All Files」と同じように使えることを確認しました。 望み通りの環境になって、めでたしです。
kamozaka

2023/05/26 11:02

補足: > 「ソリューション」「プロジェクト」「複数ファイル」「単一ファイル」の全てで可能でした。 「複数プロジェクト」も可能でした。 これにより、「ソリューションに含まれるプロジェクト全てではなく一部のみ」を対象にすることも可能です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.44%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問