10

リクエスト:

特定の式のプロキシ値を提供し、ドキュメントの再解析をトリガーできるアナライザーを作成できるようにしたいと考えています。

動機:

私たちのコードには、コントロールとバリアント グループを使用して、デプロイされた状態またはアクティブな状態のいずれかになる ABTest が散らばっています。テストの状態の決定は、データベース ルックアップによって行われます。コントロール グループで展開されるテストの場合、次の形式のステートメントはすべて false と評価されます。

if(ExperimentService.IsInVariant(ABTest.Test1))
{
}

このシナリオではグレー表示にすることで、開発時にこれを扱いやすくするためのツールを提供しようとしています。現状では、基本的に自分でパーサーをプレイする必要があるため、これはかなり制限されており、堅牢ではありません。

実際のコードが

if(!ExperimentService.IsInVariant(ABTest.Test1))

また

if(ExperimentService.IsInVariant(ABTest.Test1) || true)

また

var val = ..... && (ExperimentService.IsInVariant(ABTest.Test1);
if(val){
  // val is always going to be false if we deployed control.
}

考えられるアプローチとしては、一度実行されるアナライザーを作成し、実際の IDE 解析が行われる前にツリーを書き換えることができるようにすることです (または、もう一度解析するだけです)。これらは一度だけ発火し、特定の式を別の式に置き換えることができます。これにより、これらのすべての実験呼び出しを真と偽のリテラルに置き換えることができます。

その結果、これらのセクションは、到達不能コードのコード グレー表示などの他のすべての IDE 機能だけでなく、異なる値を持つことのない変数のようなより複雑な機能からも恩恵を受ける可能性があります。

明らかにこれは単なる例であり、どの程度実現可能かはわかりません。適切な機能や既存のものに対する提案は大歓迎です。

4

2 に答える 2