LoginSignup
10
9

More than 5 years have passed since last update.

ソリューション内の[VB|C#]ドキュメント全てをフォーマットする

Last updated at Posted at 2013-02-07

VSの便利な機能として、ドキュメントのフォーマットがあります。
参考:ソース・コードを一瞬で整形するには?
※VS2005 のみとあるが、筆者が確認したところ VS2012 でも問題なかった

しかし、これは単一のドキュメントしか対象にできません。
ソリューション内のドキュメントに対して一括で操作したいと考える方も多いと思います。

はい、ということで、一括で操作を行う方法について記します。
そして、今回も Roslyn CTP - September 2012 を使いたいと思います。
※Roslyn を使うため、対象となるプロジェクトは VB または C# で書かれたものとなる。

方針としては、
1.ソリューションのパスからドキュメントの一覧を取得
2.そのドキュメント全てに Format() を適用
3.適用したドキュメントを上書き保存
の順になります。

以下サンプルです

sample.cs
using System;
using System.IO;
using System.Linq;
using System.Text;
using Roslyn.Services;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 0)
                throw new ArgumentException("*.sln path を設定してください");

            var path = args.Single();

            var solution = Workspace.LoadSolution(path).CurrentSolution;

            foreach (var document in solution.Projects.SelectMany(p => p.Documents))
            {
                var newDocument = document.Format();

                using (var writer = new StreamWriter(document.FilePath, false, Encoding.UTF8))
                    newDocument.GetText().Write(writer);
            }
        }
    }
}

前回の ソリューション内のドキュメント全てを対象に未使用のusing削除および並び替えをする と組み合わせれば、ソリューション内のドキュメント全てに対し、整形とusingの整理を行うことも可能です。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9