C#コードをブラウザ内でマスキングする
型・メソッド・変数の対応関係を残しながら、プロジェクト固有名・値・コメントを共有用コピーで置換します。入力コードと結果はDevelop Toolsのサーバーへ送信・保存されません。
C#コードマスキングツールを開く結論
型・memberの対応、await、nullable、例外経路を残し、会社名、顧客名、endpoint、connection string、ログ文を置換します。標準APIまで変わった場合は、機密箇所を戻さず説明に必要な項目だけ解除します。
元codeを直接編集せず、共有用copyで作業してください。
ASP.NET Coreサービスの共有範囲を確認する
[ApiController]
[Route("api/internal/[controller]")]
public sealed class CustomerController(CustomerService service) : ControllerBase
{
[HttpGet("{id}")]
public async Task<ActionResult<CustomerDto?>> GetAsync(Guid id)
=> await service.FindAsync(id);
}
属性、route template、独自型、ID、endpoint、接続文字列、ログtemplateを同じ観点で確認します。
C#コードマスキングツールで確認する手順
- 1. 再現に必要な型と呼び出しだけを共有用コピーへ切り出す
- 2. 秘密値が漏えい済みなら先に失効する
- 3. 識別子・値・コメントをマスキングする
- 4. C#構文と残存情報を目視して結果だけ共有する
切り分けチェック表
| 分類 | 確認対象 |
|---|---|
| 構造 | namespace、型、DI、async、nullable |
| 秘密 | URL、connection string、Token、ID |
| 境界 | 属性、Directive、raw string、C# 14 |
| 周辺 | ログ、設定、SQL、画像 |
コンパイル時・実行時・フレームワーク境界を分ける
| 層 | 確認する情報 | 共有時の注意 |
|---|---|---|
| C# compiler | warning番号、型、nullable context、LangVersion | 警告を!やcastだけで隠さず契約を確認する |
| .NET runtime | 例外型、inner exception、stack frame、実入力 | path、ID、message内の個人情報を除く |
| ASP.NET Core | 環境、middleware、設定source、trace ID | Authorization、cookie、query、bodyを確認する |
| EF Core | LINQ、発行SQL、roundtrip、row数 | sensitive data loggingの結果をそのまま共有しない |
C# version、target framework、ASP.NET Core・EF Core versionは別々に記録し、該当versionの公式資料と照合してください。
C#固有構文をマスキング後に目視確認する
- namespace、型、record、generic、constraint、nullable annotationの対応を確認する
- async、await、Task、CancellationToken、LINQ query chainと呼び出し順を確認する
- attribute、route template、framework型・methodが説明に必要なら個別に解除する
- #nullable、#if、#endif、#pragma、#regionを原文と比較する
- raw string、interpolated raw string、primary constructor、required、initを重点確認する
- null-forgiving operator(!)は実行時検査ではないため、警告を抑えた根拠を確認する
- C# 14のextension block、field、null-conditional assignmentは非対応を前提に確認する
2026-08-13時点の確認ではDirective、raw string、C# 14構文が壊れる場合があります。ツール更新後は再テストしてください。
コード・設定・ログ・SQLを分けて共有する
| 共有物 | 推奨する確認 |
|---|---|
| .cs | C#コードマスキングツールでnamespace、型、member、値、コメントを置換 |
| appsettings.json | JSONマスキングツールで設定Key・Value・接続先を確認 |
| stack trace・.log | Logマスキングツールでpath、IP、ID、email、Tokenを確認 |
| 発行SQL | SQLマスキングツールでtable、column、literal、commentを確認 |
| HTTP情報 | Authorization、Cookie、Set-Cookie、query、body、PIIを手動確認 |
一度公開したToken、password、connection stringは、投稿削除やマスキングだけで対応を終えず、失効・ローテーションしてください。組織の規程、契約、法令、利用サービスの規約を優先します。
現行C#コードマスキングツールの対応範囲を確認する
| 確認項目 | 現行ツールの扱い | 共有前の確認 |
|---|---|---|
| 分類 | クラス・型、関数・メソッド、識別子、値、コメントを置換 | Roslynと同等の完全な構文解析ではない |
| 一般構文 | class、record、LINQ、asyncの外形を概ね保持 | 同一識別子の対応とdelimiterを元コードと比較する |
| 標準API | System名前空間、属性、framework methodも置換され得る | 説明に必要な項目だけ結果側の右クリックで解除する |
| Directive | #nullable、#if、#endif等が壊れる場合がある | nullable contextや条件を相談文にも記載する |
| 文字列 | 通常・逐語的・補間文字列を置換 | raw stringは境界が崩れる場合がある |
| C# 14 | extension block、field keyword等を完全解析しない | 現時点の非対応境界として手動確認する |
| 操作 | 全消去、結果コピー、右クリックによる解除・再適用 | 解除で戻った秘密情報を送信前に再確認する |
| 保存 | 表示設定だけをLocalStorageへ保存 | 入力・結果はDevelop Toolsのサーバーへ送信・保存しない |
マスキング結果は共有用コピーです。コンパイル可能な代替ソースや完全匿名化を保証しません。元コードを上書きせず、ビルド成果物へ混入させないでください。
Versionと公式資料を照合する
- Microsoft Learn: C# overview
- Microsoft Learn: Nullable reference types
- Microsoft Learn: Asynchronous programming scenarios
- Microsoft Learn: Type conversions
- Microsoft Learn: ASP.NET Core configuration
- Microsoft Learn: Safe storage of app secrets
- Microsoft Learn: EF Core performance
- Microsoft Learn: C# 14
コード例は対象SDKとLangVersionで確認し、意図的なerror例は警告番号・例外・再現条件を記録します。C# 14 / .NET 10の記述は公開時点の公式資料と照合してください。
具体例:ASP.NET CoreコードをAIへ相談
型・memberの対応、await、nullable、例外経路を残し、会社名、顧客名、endpoint、connection string、ログ文を置換します。標準APIまで変わった場合は、機密箇所を戻さず説明に必要な項目だけ解除します。
実在しないexample.test、Dummy ID、架空の型名を使い、再現に不要なProject情報を取り除いて確認します。
- 最小再現を共有用copyへ切り出す
- 型・識別子・値・commentをマスキングする
- C#構文とerror条件を元codeと比較する
- マスキング結果だけを共有する
結果側は右クリックで個別解除・再適用できます。戻した情報が本当に必要か送信前に再確認してください。
よくある質問
- マスキング後のC#コードはbuildできますか?
- 保証しません。標準API、attribute、Directive、raw string、C# 14構文が変化する場合があるため、共有用copyとして元codeと比較してください。
- 右クリックでどこまで戻せばよいですか?
- Task、LINQ method、framework attribute等、説明に不可欠な項目だけを解除します。元の秘密値や固有名が戻っていないか再確認してください。
- 入力したC#コードはサーバーへ送信されますか?
- 入力と結果はブラウザ内で処理され、Develop Toolsのサーバーへ送信・保存されません。LocalStorageへ保存されるのは表示設定だけです。