Elin Element Inspector VSCode拡張を作った

注意: この記事はElinのデータ、コードなどを解析した情報を元に書かれています。プレイの楽しみを損なう情報が含まれている可能性があるため、閲覧は自己責任でお願いします。

Elin Element InspectorというVSCode拡張を作りました。

機能の説明#

Elinのデコンパイルされたソースコードでは、ElementのIDが数値リテラルとして表現されています。おそらく元々のソースコードでは定数参照になっているものが、最適化によりその情報が抜け落ちているのだと思われます。 Elementを使用しているコードを読み解くには、IDの数値の意味を手動で調べる必要があり、かなり煩雑です。

このVSCode拡張はその問題を解決します。

Element IDの横にElement名を表示#

VSCodeのinlineDecorations APIを使用して、Element IDの横にそのElementの名前を表示します。

デコレーション機能の例
デコレーション機能の例

この機能は、特定の関数の引数としてElement IDが渡されている場合に機能します。 関数の一覧は手動で拡張に登録されています。関数を追加したい場合は、elinElementInspector.additionalTargets設定に関数名と引数の位置を追加してください。 また、GitHubなどでリクエストをいただければ、デフォルトの設定として組み込めるかもしれません。

任意の数値リテラルにホバー表示#

Element IDの数値が関数の引数以外の場所で現れることもあります。そのような場合のために、任意の数値リテラルに対してElementの情報をホバー表示する機能も提供しています。

ホバー機能の例
ホバー機能の例

この機能はElement以外の数値にも反応することに注意してください。hover時なのでそこまで邪魔にならないは予想しています。

設定など#

デコレーション機能として表示する文字列は、設定からElement sourceの任意の列を選択できます。elinElementInspector.format設定を変更してください。

elinElementInspector.enableInlineDecoration及びelinElementInspector.enableHoverfalseに設定することで、それぞれの機能を無効化できます。

デフォルトではこの拡張はC#のプロジェクト全てで有効になります。特定のプロジェクトでのみ有効化したい場合は、VSCode側の設定で、Workspaceごとに有効・無効を切り替えられます。