Repository navigation
診断の識別子の重複を試験で断つ - #260
Merged
Merged
診断の識別子の重複を試験で断つ#260
Conversation
PRレビュー / PR review変更 2 ファイル、コミット 1 件。 / 2 files, 1 commits. 検証の要否 / Verification required以下を走らせ、失敗した試験の名前と失敗の様子を変更前と突き合わせてください。総数だけで判断しないでください。 dotnet build ComputeWeave.sln -c Release -p:Platform=x64確認できた点 / Confirmed
これは自動の確認で、査読の代わりにはなりません。指摘は判断の材料であって、従う義務はありません。 |
This was referenced Sep 17, 2026
Merged
Merged
routersys
force-pushed
the
dev/ComputeWeave.DiagnosticIdUniqueness
branch
from
September 17, 2026 00:54
ec334ea to
3562248
Compare
13 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary / 概要
生成器の記述子に同じ識別子を持つものが2つ在ることを、計算側と Direct2D 側のそれぞれで試験が断るようにしました。試験を1本ずつ足すだけで、製品の符号は動きません。
診断の識別子は、PR を書く時点で空いている次の番号を取ります。同じ時期に書かれた2本の PR は同じ番号を取り、しかも文字どおりには衝突せずに併合できます。開いている PR #257 と PR #258 がちょうどこの形で、どちらも Direct2D 側に
CMPWD2D0102を足していました。2本を併合した木を建てると、記述子は2つともCMPWD2D0102のまま誤りも警告も出ず、既存の試験は全て通ります。出荷の記録を見る解析器は識別子が記録に在ることしか確かめず、同梱する文書の件数の検査は重複を除いた識別子を数えるので、どちらも気付きません。識別子を2つの記述子が共有すると、抑制、出荷の記録、利用者が読む説明のどれにとっても1つの規則になり、後に宣言された側は先の側の名前で報告されます。既存の試験が題名の重複を断っているのと同じ場所で、識別子の重複を断ちます。
Linked issue / 関連する課題
不要です。公開APIも診断も増えず、挙動も変わりません。
Kind / 種別
Behavior change / 挙動の変更
なしです。試験を2本足しただけで、製品の符号は1行も動いていません。
Verification / 検証
土台は
fa7f369e、試験は35622480です。計算側の生成器は土台の616件に対して617件、Direct2D 側は240件に対して241件で、いずれも失敗0件です。壊して落ちることを確かめました
試験をコミットしてから、識別子を重複させた木を3つ建てて同じスイートを走らせました。3つとも試験の注釈だけが違う
ec334ea7を土台にしています。3つとも構築は通り、出荷の記録を見る解析器の警告は0件で、落ちたのは足した試験1本だけです。既存の試験は全て通ります。CMPW0001を持つ記述子を1つ足すCMPW0001: Identifier taken twice / Invalid shader fieldCMPWD2D0001を持つ記述子を1つ足すCMPWD2D0001: Identifier taken twice / Invalid shader fieldCMPWD2D0102: Static field assigned by a static constructor / Thread synchronization intrinsic in a pixel shader3つ目は、2本の PR をそのまま併合すれば既定ブランチに入っていた形そのもので、それを避けるために PR #257 は Direct2D 側の番号を
CMPWD2D0103へ移しました。この試験が先に入っていれば、同じ番号を取った2本目の PR は、既定ブランチを併合した時点の生成器の試験で落ち、併合してしまった場合も既定ブランチの CI で落ちます。走らせていないもの
生成器の2本以外のスイートは手元では走らせていません。変更は生成器を試験する2つのプロジェクトにだけ在り、出荷する符号に触れないので、他のスイートへ届く経路がありません。
Checklist / 確認
If this touches a guarded area / 慎重を要する箇所に触れる場合
Notes for the reviewer / 査読者への注記
件数の検査を変えなかった理由
同梱する文書の件数の検査は、記述子のファイルを文字列として読み、重複を除いた識別子を数えて README の数と突き合わせます。README が述べるのは規則の数なので、数える側は重複を除いたままにしました。重複そのものを断る場所は、記述子を反射で読む既存の試験の側に置きました。読む母集合が実際に出荷される記述子で、宣言を書き写した注釈や抑制を数に入れないためです。
前提が崩れたときの戻し方
試験は2本とも1つのメソッドで、他の試験や製品の符号から参照されません。消せば元に戻ります。