41579


C#です。  
あるプログラムを移植することになって、その前段階としてハードコードした即値を洗い出したいといわれました。  
目視で洗い出そうとするとファイル数が400近くあるのでかなり手間ですし、抜け漏れがでそうです。  
できればプログラムで自動で洗い出したいです。  
最初は正規表現のパターンマッチでやろうとしたのですが、  
かなり複雑な条件になりそうで根本的に無理筋な気がしてきています。  
できればC#の構文解析を行い、リテラルをピンポイントで抜き出したいです。  
そのような目的に利用できるツールやライブラリはないでしょうか。

よろしくお願いします。


CC BY-SA 3.0
2018-02-08T07:24:54.297
41575
2018-03-05T01:22:50.030
2018-03-05T01:22:50.030
754
18637
question
c#
ハードコードされた即値（文字列、整数、浮動小数）を洗い出したい


C#のコンパイラーは近年オープンソース化されており( **.NET Compiler Platform** = **Roslyn**
)、コード分析や自動修正のルールもSDKのクラスを使用すれば比較的容易に作成できるようになりました。

ですので定数の抽出程度であれば

  1. [.NET Compiler Platform SDK](https://docs.microsoft.com/ja-jp/dotnet/csharp/roslyn-sdk/)をインストールする
  2. Analyzer With Code Fixプロジェクトを作成する
  3. `DiagnosticAnalyzer`の`Initialize`メソッドで`RegisterSyntaxNodeAction`を呼びだしてコールバックを登録する
  4. コールバック関数内で引数のノードが対象かどうかを判定し、対象であれば`ReportDiagnostic`メソッドを実行する。

という手順で簡単にVisual Studioのエラーリストに情報を表示することができます。  
また`CodeFixProvider`でコードの自動修正を定義することもできます。


CC BY-SA 3.0
2018-02-08T09:21:07.777
41579
2018-02-08T09:21:07.777
5750
41575
answer