C++コードをブラウザ内でマスキングする
template、pointer・reference、ownership、failure stageを残しながら固有symbol・値・commentを共有用copyで置換します。入力と結果はDevelop Toolsのサーバーへ送信・保存されません。
C++コードマスキングツールを開く結論
source、header、CMake、build logを分け、class、template引数、pointer・reference・const、所有権、宣言と定義の関係を残します。会社名、path、target、URL、Token、実値は置換します。
元sourceを直接編集せず共有用copyで作業します。
原因と確認順を整理する
- source / headerとCMake、build logは別々にマスキングする
- Segmentation faultではownershipと最初の自作frameを残す
- linker errorでは宣言・定義・translation unitの関係を残す
- macro・attribute・operator・raw string・moduleを元sourceと比較する
template<class T>
class Cache {
public:
std::unique_ptr<T> take(std::string_view key);
};
#define TRACE_VALUE(name, value) log(#name, value)
診断から修正・再テストまでの手順
- 1. 再現条件と最初のdiagnosticを記録する
- 2. source / headerとCMake、build logは別々にマスキングする
- 3. Segmentation faultではownershipと最初の自作frameを残す
- 4. 同じcompiler・option・入力で修正前後を比較する
C++の症状別ガイドへ進む
C++コードを安全に共有する手順
- 必要なsource・headerだけを共有用copyへ切り出す
- CMakeとbuild / Sanitizer logを別に最小化する
- symbol・値・commentをマスキングする
- 構文・ownership・failure stageを原文と比較する
preprocess・compile・link・runtimeを分ける
| 段階 | 代表症状 | 確認する情報 |
|---|---|---|
| preprocess | C1083、file not found、macro分岐 | include path、feature guard、compiler command |
| compile | 構文・型・template・constraint error | 最初のerror、C++ standard、compiler version |
| link | undefined reference、LNK2019 | 未解決symbol、object・library、target、architecture |
| runtime | Segmentation fault、Access Violation、data race | 最初の自作frame、入力、lifetime、Sanitizer |
C++ standard、compiler、standard library、OS、architecture、Debug / Release、最適化、Sanitizer、warning optionを別々に記録します。
C++固有構文をマスキング後に確認する
- template引数とnest、pointer・reference・const・value category、ownershipとlifetimeの対応を残す
- function-like macro、variadic macro、stringification(#)、token pasting(##)を原文と比較する
- #if defined、__cplusplus、__has_includeのbranch条件と数値を確認する
- [[nodiscard]]、[[assume]]、operator<=>、conversion operator、user-defined literalを確認する
- raw stringはdelimiterが残ってもbodyが置換されるため終端を確認する
- C++20 module・coroutine・ranges / viewsと、C++23 expected・deducing this・generatorを重点確認する
2026-08-13時点の実機確認です。parser更新時は短い回帰sampleで再確認してください。
source・CMake・build log・core dumpを分けて共有する
| 共有物 | 推奨する扱い |
|---|---|
| .cpp / .hpp | C++コードマスキングツールでsymbol、値、commentを置換 |
| CMakeLists.txt | 完全対応を前提にせずtarget・path・packageを手動確認 |
| build / Sanitizer log | Logマスキングツールでpath、thread ID、address、symbolを確認 |
| JSON / SQL | 専用マスキングツールへ分ける |
| binary / core / object / PCH | browser toolへ入力せず、必要なtextだけ抽出・最小化 |
URL、IP、port、Token、certificate、license、connection stringが漏えい済みなら失効・ローテーションしてください。
現行C++コードマスキングツールの境界を確認する
| 対象 | 現行の扱い | 共有前の確認 |
|---|---|---|
| 公開範囲 | C++17 / C++20の一般構文を主対象 | C++23が現行ISO standardでもtool範囲とは別 |
| 標準API | std::move、std::views、std::convertible_to等は置換され得る | 必要な項目だけ右クリックで解除・再適用 |
| preprocessor | macro名・引数・body、defined symbol、__cplusplus数値を置換し得る | #、##、branch条件、__has_includeを比較 |
| 固有構文 | attribute、raw string、operator、module、coroutineは重点確認 | [[nodiscard]]、[[assume]]、delimiter、export moduleを比較 |
| 数値 | size、index、alignment、timeout、version guardも代替値になる | 再現用の安全なdummy値へ調整 |
| 保存 | 入力と結果はブラウザ内で処理 | サーバーへ送信・保存せずLocalStorageは表示設定だけ |
結果は共有用コピーです。compiler同等の解析、compile可能性、完全な匿名化を保証しません。元sourceを上書きせずbuild treeへ入れないでください。
対象versionと公式資料を照合する
- Standard C++: The Standard
- C++ Core Guidelines
- Clang AddressSanitizer
- Clang ThreadSanitizer
- CMake target_include_directories
- CMake target_link_libraries
- Microsoft Learn: Fatal Error C1083
- Microsoft Learn: LNK2019
GCC・Clang・MSVCのdiagnosticと機能対応は異なります。C++17 / C++20の例は対象compilerで確認し、C++23はcompilerとstandard libraryの対応状況を明記します。未定義動作(UB)は特定結果を保証しません。
具体例:templateを含む不具合をAIへ相談
source、header、CMake、build logを分け、class、template引数、pointer・reference・const、所有権、宣言と定義の関係を残します。会社名、path、target、URL、Token、実値は置換します。
example.test、Dummy path、架空の型名を使い、再現に不要なproject情報を取り除きます。
- 最小再現を共有用copyへ切り出す
- symbol・値・commentをマスキングする
- C++構文とfailure stageを比較する
- 結果だけを共有する
結果側は右クリックで個別解除・再適用できます。戻した情報が必要か送信前に再確認してください。
よくある質問
- マスキング後のC++コードはcompileできますか?
- 保証しません。standard API、macro、attribute、raw string、module、C++23構文、数値が変化する場合があります。
- 右クリックでどこまで戻せばよいですか?
- std::move、std::views、std::convertible_to等、説明に不可欠な項目だけを解除し、固有情報が戻っていないか確認します。
- 入力したC++コードはサーバーへ送信されますか?
- 入力と結果はブラウザ内で処理され、サーバーへ送信・保存されません。LocalStorageへ保存されるのは表示設定だけです。