4

重複の可能性:
Resharperstring.formatショートカット

私たちの大規模なコードベースには、残念ながら次のようなステートメントがたくさんあります。

MessageBox.Show("Hello, " + userName + "!");

明らかに、これは文字列の外部化を容易にするためにより良いでしょう:

MessageBox.Show(String.Format("Hello, {0}!", userName));

このジョブを自動化できるツールはありますか(文字列の連結をString.Formatに変換します)?

そうでない場合は、特定のC#ソースファイルの構文ツリーを構築するパーサーを見つけ、このツリーで文字列の連結を行う式を見つけ(簡単ではないようです)、見つかったオカレンスを変換する必要があると思いますか?

編集:DevExpressCodeRushは私が望むことを正確に実行します-かなりクールです。しかし残念ながら、それは現在のソースファイルでのみ機能し、すべての発生をクリックする必要があります(またはそう思われます)。すべてのソースファイルに対して操作を実行したい(「すべて置換」など)。

4

3 に答える 3

1

DevExpressCodeRushをご覧ください。これらの問題を簡単に見つけてリファクタリングすることができます。リファクタリングを自動化できるかどうかはわかりませんが。ReSharperにも同様の機能があります。

于 2012-10-08T14:20:03.250 に答える
1

ReSharperは、を押すことにより、この種のアクションをサポートしAlt+EnterEnterます。

詳細については、こちらをご覧ください: Resharperstring.formatショートカット

于 2012-10-08T14:20:54.500 に答える
1

ツールがない場合は、VisualStudioの単純な[すべて置換]で実行できます。

探す:

"([^"]*)"\s*\+\s*(:i)

置換:

String.Format("\1#{0}", \2)

残念ながら、これらの式をテストするためのVisualStudioにアクセスできません。「検索」式の:b代わりに使用する必要がある場合があります。\s

于 2012-10-08T14:26:40.730 に答える