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の整理を行うことも可能です。