Repository navigation
Bump Microsoft.VisualStudio.Threading.Analyzers from 17.14.15 to 18.12.1 - #3
Closed
dependabot[bot] wants to merge 39 commits into
Closed
dependabot[bot] wants to merge 39 commits into
dependabot[bot] wants to merge 39 commits into
Conversation
- `Protect main` ruleset を追加した。 main への直接 push・force push・削除を拒否し、 PR と必須チェックの成功をマージ条件にする(管理者も迂回できない)。 - 必須チェックは `ci`。 `verify` は対象のソリューションが無いとスキップされ、そのまま 必須にすると「Expected」のまま残ってマージできなくなるため、`changes` / `verify` を 集約するジョブで受ける。 - コミット規約 §3 に ruleset と必須チェックの名前を追記した。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- .github/release-config.json を追加(releaseBranches = main / dryRunBranches = main, dev) - release.yml の最初のステップで実行ブランチを検証する (これまでは制限が無く、dev から公開できてしまっていた) - コミット規約 §3 と開発手順 §8 にブランチの規則を記載 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- 同じ版の再リリースを禁じるガードは公開(release)だけが持つ - dry-run では警告(annotation)を出して続行する(版を上げていないだけの状態でも ブランチ・版・ゲートなどの条件を確認できるようにするため) - 開発手順 §8 にモードごとの違いを記載 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
開発手順の冒頭から「外部からのコントリビューションは受け付けません」を外し、 フォークして使えることの説明だけを残す(あえて明確にする必要がないため)。 CHANGELOG の同じ理由づけも削り、事実(CONTRIBUTING.md を置かない/削除した)だけにする。 copilot-instructions の「リモートが無い」という古い理由も削除する。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 ジョブで 5 ソリューションを直列に検証していたため 8 分かかっていた(実測 2026-10-26)。 - verify をマトリクスにし、ソリューションごとに 1 ジョブ(壁時計は最も遅い 1 本になる) - docs(文書とコードの走査)と packaging を別ジョブにして同時に走らせる - そのため verify.ps1 へ -SkipDocs / -SkipPackaging を追加し、節ごとの所要時間を出力する - ci の集約対象を 4 ジョブへ広げる Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- `git diff --name-only` は非 ASCII のパスを引用するため(既定の core.quotepath=true)、 `.github/開発手順.md` のような変更が「リポジトリ全体の変更」と一致せず、 検証するソリューションが 0 本になっていた(実測 2026-10-27。 ビルドとテストが 黙って省略される)。 `-c core.quotepath=false` を付ける。 - 対象が 0 本のとき `solutions` の出力が空文字になっていた(空の配列をパイプすると ConvertTo-Json が何も出力しない)。 `[]` を明示する。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- verify.ps1 の --no-incremental を -FullBuild へ移した(既定は増分。 5 本の合計 43 秒 → 23 秒) - CI は -FullBuild を付ける(ゲートでは警告の取りこぼしを許さない) - 変更の判定で .md を除いた「コードの変更」を使い、文書だけの push では verify と packaging をスキップする(docs ジョブは必ず走らせる) - 検証手順 §3・開発手順 §4 に規則と理由を記載 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
git diff が失敗したとき(浅いチェックアウト・不正な SHA など)は「すべてを対象」に する(検証を飛ばすより安全)。 stderr を 2>&1 で受けて終了コードで判定する。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
プロジェクトごとに `dotnet pack` を起動すると 30 回のプロセス起動とビルド評価が積み上がる。 グループの全プロジェクトは同じ版(版の所有者は Directory.Build.props)なので、版の上書きは 1 回で足り、MSBuild がグループ内を並列に pack する。 生成物(30 パッケージ)と 展開済みキャッシュの削除・記録の更新は従来どおり。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
WinForms 版は OnPaint で全件を描いていたため、フォルダーのファイル数に比例して Font / SolidBrush を生成していた(影の帯は画素ごとに生成)。 - 描画範囲を ThumbnailLayoutResult.VisibleRange で絞る(判定は Core が単一所有) - Font(大きさ・太さ別)と SolidBrush(色別)をキャッシュし、破棄時に解放する - ドキュメントコメントの誤りを直す(IItemTemplate → ItemTemplate、戻り値の条件、 オーバーロードの説明、単位を DIP に統一、既定値を実装に合わせる) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- ThumbnailShadowPlan.BuildDeviceBands: 帯の形は画素寸法・広がり・倍率だけで決まるため、 形を覚えて平行移動する(隅の走査は 1 件あたり最大 4 × 広がり² 回の距離計算。 一覧の サムネイルは寸法が揃うので 2 件目以降はやり直さない)。 値は入力だけで決まるので結果は不変 - ThumbnailLayoutResult.IndexAt: 外枠の下端(行の中で同じ値・行の順に単調増加)で行を 二分探索し、その行の列だけを見る(ポインターの移動のたびに呼ばれる。 行内で上端は揃わない) - 上記の性質を固定するテストを追加し、SPEC に理由を記載 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
規約(コーディング規約 §コードコメント)は「最適化は実施するが、コメントに最適化の 内容を書かない」「リファクタリングの経緯を残さない」と定めている。 - XML コメントと内部コメントから、費用の比較・実測の記述・以前の実装への言及を除く - 帯の形が位置に依存しないこと、行内で上端が揃わないこと(設計上の制約)は残す Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- ThumbnailLayout.Resolve: 入力の高さを配列へ複写せず、渡された並びをそのまま読む - ThumbnailLayoutResult.VisibleRange: 行の下端で最初の行を決め、行の上端がビューポートの 下端に達したら打ち切る(行の下端・上端は行の順に増える。 行内は下端揃えのため上端が 揃わないので、端の行だけ項目ごとに交差を判定する) - ConvertPairs: 置換の評価器を変換マップと一緒に 1 度だけ作り、Convert のたびの クロージャ確保をなくす。 Chain は GroupBy + ToDictionary をやめて 1 回の走査で辞書を組む。 2 つの連結(Add / +)は params 配列を作らない - BinarySearchLayoutStrategy: 試行用バッファを ArrayPool から借りる(探索の反復ごとに 確保しない) - ColumnMetricsCache: 初期容量を入力の規模から決める - MarqueeCore: 8 方向ハンドルの一覧を宣言順の配列で持つ(列挙の反映を待たない) - 可視範囲が全件走査と一致することを固定するテストを追加し、SPEC に費用の考え方を記載 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
増分ビルドは前回の生成物を再利用するため、該当プロジェクトがスキップされて警告が 隠れることがある。 コミット前の最終確認とゲートは非増分で行う。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- ConvertPairs.Convert: 変換元がすべて 1 文字なら文字の対応表で置換し、正規表現を作らない (実測 2026-10-28: 7,800 文字の変換で 4.67ms → 0.47ms、約 10 倍)。 2 文字以上を含む場合は 長い並びを優先する必要があるため正規表現のまま。 対応表は変換マップと一緒に 1 度だけ作る - ConvertPairs.Chain: 中間のグループを作らず 1 回の走査で辞書を組む(前ターンの変更を含む) - DPLayoutStrategy: 無効状態の番兵を正の無限大へ統一(IsValid は正の無限大で false を返すため、 従来の double.MaxValue では未到達の状態が「幅 0 の有効な状態」と区別できなかった)。 テーブルの初期化は Array.Fill で行う - 1 文字の対応表と正規表現が同じ結果になること、未到達の状態が無効になることを固定するテストを追加 - SPEC_System / SPEC_API に適用方法の使い分けを記載 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
動的計画法は末尾を固定した区間の幅・高さを列数ごとに引き直していたため、メトリクスの取得回数が 「区間の数 × 列数の上限」になっていた。 末尾を固定すれば開始位置を減らしながら累積で求まるので、 区間ごとに 1 回だけ計算する(結果は変わらない)。 - 共有キャッシュ(ColumnMetricsCache)にも同じ値を載せ、他の戦略の取得回数も増やさない。 - 実測 2026-10-28: 400 件・列上限 10 で 24.1 ms → 3.8 ms、200 件で 9.5 ms → 0.8 ms。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
パスを受け取る EsImageCodec のメンバー(Decode / ReadSize)は、寸法を先に求めてから復号する 呼び出しで同じファイルを 2 回読む経路を作っていた。 読み込み(Open)を 1 回だけ行う型を追加し、 寸法の取得と復号が同じ内容を使うようにした。 EsImageCodec は内容(ReadOnlySpan<byte>)を受ける面だけを持つ。 - 追加: EsUtil.Platform.Core.Imaging.EsImageFile(Open / GetSize / Decode / Dispose)。 - 削除(破壊的): EsImageCodec.Decode(string, int) / Decode(string, int, Span<byte>) / ReadSize(string, int)。 - 単体テストを EsImageFile.Tests.cs へ分け、仕様書(SPEC_API・SPEC_System)と変更履歴を追随させた。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
EsUtil.Ui.AvaloniaUI の ColorComboBox のリンク先が ColorPicker(実在しないフォルダ)になっていた。 実在する ColorComboBox/README.md を指すようにした。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
マトリクスの 5 ジョブが同じ大きなキャッシュ(実測 1.45 GB)を毎回復元しており、1 ジョブあたり 43 秒かかっていた。 ソリューションごとにキーを分け、各ジョブが自分の依存だけを展開する。 - キーの識別子は .slnx の内容のハッシュ(ソリューションを変えても同じ系列の直前のキャッシュへ戻る)。 - 依存の変更(**/*.csproj)は従来どおりキーに含める。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
リポジトリごとに違う値(ソリューション・製品名)をスクリプト本文へ書かず、設定から取る。 併せて、.csproj を持つフォルダが Dependabot の対象から漏れていないかを検証に加えた (漏れると、後から足したプロジェクトの依存だけが更新されない)。 - VerifyCommon.ps1 に Get-RepoConfig を追加(3 リポジトリで同じ内容)。 - release-config.json に product / solutionFile / solutions を追加し、verify.ps1 の既定を設定から取る。 - .github/dependabot.yml を追加(GitHub Actions と NuGet。 全プロジェクトのフォルダを列挙)。 - verify.ps1 に「Dependabot の対象」を追加(追跡対象と未追跡の .csproj を対象にする)。 - 検証手順の合否基準と §8 に規則を記載。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
公開するパッケージについて、使った依存(SBOM)と出所(build provenance)を後から辿れるようにする。 手順の所有者を .github/RELEASE.md とし、ワークフローはその実装であることを明記した。 - グループ(ソリューション)ごとに CycloneDX の SBOM を作り、そのグループの Release へ添付する。 - 公開した .nupkg に actions/attest-build-provenance で由来の証明を付ける(tag ジョブ)。 - SBOM のツールは .config/dotnet-tools.json が単一所有(CI とローカルで同じ版)。 - .github/RELEASE.md を新設(構成・依存更新・リポジトリ設定・手順・版・添付・復旧・ローカル確認)。 - ルート README のドキュメント表から RELEASE.md を辿れるようにした。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
縮小の計算(最近傍・双線形・面積平均の 3 実装、列の対応表、並列化のしきい値、行の余白の扱い)を削除し、 WIC の IWICBitmapScaler へ置き換えた。 読み込み時の縮小と同じ実装になるため、読み込んで縮小した画素と 表示用に縮小した画素が一致する。 - EsImageQuality は補間の指定へ写す(Low = 最近傍 / Mid = 双線形 / High = Fant)。 - 縮小は Windows 専用になる(Resize / EsImageCodec.Resize / EsBitmapOperations.ScaleInto に [SupportedOSPlatform]。 表示境界は非 Windows で PlatformNotSupportedException にする)。 - 減色は色番号から呼び出し側の領域へ直接書く(画像 1 枚分の複製をなくす)。 乗算はパレットの色ごとに 1 回。 - 実測: 4K → 長辺 320 で Low 0.015 ms → 6.5 ms、High 1.0 ms → 9.7 ms。 代わりに経路間の画質の一致、 フィルタ実装の単一化、行の余白・並列化・しきい値の管理の削除を得た。 - 計測結果(Result_Measurement.md と生成スクリプト)・仕様書・README・変更履歴を追随させた。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
面積平均と双線形で「細線が残るかが逆になる」と書いていたが、Fant へ替えた後は同じ関係を確かめていない。 面積平均に近い Fant なら残り、双線形だと薄れる、という測定済みの事実だけを残す。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
縮小を WIC へ移した判断の根拠(どこで速く、どこで遅いか)を残す。 同じ入力・同じ機械で測った最小値の比較表と、減色を色番号から直接書くようにした効果を追記した。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
範囲・浮動版([12.*,) / * / 3.*)を各 .csproj が持っていたため、同じコミット(タグ)でも復元した 時点の最新が入り、公開済みのパッケージを後から再現できなかった。 版を Directory.Packages.props へ 集約して完全一致にし、復元結果を packages.lock.json で固定する。 - Directory.Packages.props を新設(ManagePackageVersionsCentrally)。 25 パッケージの版を単一所有する。 - 76 プロジェクトの PackageReference から Version を削除(浮動版 100 件を解決済みの版へ固定)。 - RestorePackagesWithLockFile を有効にし、76 プロジェクト分の packages.lock.json を追加。 ビルドと検証は -p:RestoreLockedMode=true で復元し、食い違いを NU1004 で検出する。 - NuGet.config に packageSourceMapping(nuget.org のみ)を追加(中央管理では必須。 無いと NU1507)。 - 構成に依存する PackageReference は置けなくなった(lock は構成ごとに分かれない)。 サンプル 4 本の AvaloniaUI.DiagnosticsSupport(Debug のみ・未使用)を削除した。 - verify.ps1 に「パッケージの版」「ロックファイル」の検査を追加し、規約・検証手順・開発手順を更新。 - 公開する nuspec の依存は最小版のまま(利用側の解決幅は狭まらない)。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
公開するパッケージを、検証した lock と同じ依存で作る。 lock と Directory.Packages.props が食い違えば NU1004 で止まる(検証(build.yml)と同じ扱いにする)。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
自前実装(WIC へ移す前の Low/Mid/High)と WIC の 5 つの補間を、同じ入力・同じ条件で測った。 品質は整数ブロックの面積平均を正解とした PSNR と最大誤差で示す。 - 速度: 自前実装は 2〜78 倍速い。 WIC は補間によらず元画像を全走査するため。 WIC 同士では NearestNeighbor < Linear < Cubic < Fant < HighQualityCubic の順に遅い。 - 品質: 自前 High(面積平均)は正解そのもの。 Fant は最大誤差 1 で優秀。 Cubic / HighQualityCubic は 4 倍以上の縮小で Linear より悪い(リンギング)。 NearestNeighbor が最低。 - メモリ上の縮小では WIC が速度・品質とも勝る段は無い。 WIC を使い続ける価値があるのは ファイルから読むときの縮小(原寸を作らずにデコードしながら縮小する)だけ。 - SPEC_API の「縮小は同等以上に速い」「High が最も遅い」という記述を実測に合わせて直した。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
前回「正解」と書いていたのは整数ブロックの面積平均(切捨て)という定義であり、ground truth では ない。 基準を変えれば PSNR は大きく動くため、比較は同じ基準の中でだけ行えることを明示する。 - 基準どうしの距離を実測: 面積平均(切捨て)vs(四捨五入)が 51〜56 dB、 面積平均 vs Lanczos-3 が 27〜37 dB。 基準の選択で 20 dB 以上動く。 - 追加計測: Fant は四捨五入の面積平均と完全一致(∞)。 「近似」ではなく同じフィルタで、 丸めだけが違う。 自前 High の誤差 0 は基準と同じ算法であることによる(定義上当然)。 - Lanczos-3 を基準にしても順位は変わらない(Low < Linear < Fant)。 ただし 2 倍の縮小では Linear と Fant がほぼ同等になる。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
品質の参照が EsImageQuality.High(自分の実装)だったため、その段階が必ず ∞ dB になり、 実装を変えると参照も動いて版をまたいで比べられなかった。 アンチエイリアスの効いた縮小の標準で ある Lanczos-3 を計測スクリプト内に実装し、参照にする。 - Result_Measurement.ps1: Lanczos-3(支持幅 3s・2 パス・値域へ丸め)を追加し、縮小の品質の参照にする。 - 品質の語を「参照」、速度比の語を「速度の基準」に統一(表の備考列の紛らわしさを解消)。 - Result_Measurement.md を再計測で差し替え(§6.7 の High が ∞ ではなく 35.8〜45.8 dB になった)。 - §11.3 の品質表を Lanczos-3 参照で作り直し、参照を変えると判定が逆転することを記録: HighQualityCubic は面積平均参照では低く、Lanczos-3 参照では最も高い(リンギングどうしが似る)。 - 判断を「速度は旧実装が優位/品質は参照で決まる(画面キャプチャは Fant、写真風は HQC)」へ改めた。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
EsImageQuality(Low / Mid / High の段階)を廃止し、算法の名前を持つ EsImageScalingMode を定義した。 Wic で始まる 5 つは WIC の補間に 1 対 1 で写し(ToInterpolationMode)、Es で始まる 3 つは 本ライブラリの計算(最近傍・双線形・面積平均)で縮小する。 既定は WicFant。 - EsImageScalingMode を追加(WicNearestNeighbor / WicLinear / WicCubic / WicFant / WicHighQualityCubic / EsNearestNeighbor / EsBilinear / EsBox)。 EsImageQuality を削除。 - EsBitmapOperations.ScaleInto を方法で振り分け、自前の 3 実装を復活させた (列の対応表・並列化のしきい値・行の余白の扱いを含む)。 - ToInterpolationMode を追加(WIC の方法だけを写せる。 Es の方法は例外)。 - Resize の既定を WicFant にし、EnsureQuality を EnsureScalingMode へ変えた。 - 計測スクリプトを 8 通りに拡張し、Doc を再計測で差し替えた: Es の方法は WIC より 3〜340 倍速く、EsBox は WicFant と同じフィルタ(整数倍なら最大差 1)、 EsBilinear は WicLinear と同じ算法(最大差 1)。 品質の語を「参照との一致度」へ改めた。 - テストを方法ごとに拡張(WIC の契約・同じ算法の一致・未定義値の例外)。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
EsImageQuality を廃止して EsImageScalingMode を導入したため、公開する版を上げる。 グループは 5 つとも 0.2.0 にする(グループ内の全パッケージが同じ版)。 - Directory.Build.props の 5 つの VersionPrefix を 0.2.0 へ。 - packages.lock.json は ProjectReference の版を反映して追随(ビルドで自動更新)。 - local-versions.json は指紋が変わったため pack の検証で更新(suffix 2 → 3)。 - CHANGELOG の見出しを「未リリース(0.2.0)」にし、版の方針へ次の版を追記。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
packages.lock.json の要求範囲が SDK の版に追従して変わり、SDK の版が違う CI(ランナー イメージ)で NU1004 になっていた。 IsAotCompatible のプロジェクトだけを対象に Microsoft.NET.ILLink.Tasks を 明示参照し、版を Directory.Packages.props(10.0.14)で固定する。 実測: SDK 10.0.403 で要求 [10.0.14, )、ランナー イメージの SDK で [10.0.13, )。 規則は .github/ビルド設定規約.md §8、手順は .github/開発手順.md に追記した。 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
--- updated-dependencies: - dependency-name: Microsoft.VisualStudio.Threading.Analyzers dependency-version: 18.12.1 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
Author
|
OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting If you change your mind, just re-open this PR and I'll resolve any conflicts on it. |
dependabot
Bot
deleted the
dependabot/nuget/Microsoft.VisualStudio.Threading.Analyzers-18.12.1
branch
October 29, 2026 14:36
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.
dev へ取り込み済みです(版の更新はそのまま cherry-pick し、Dependabot が更新しなかった packages.lock.json を buildScript/updateLocks.ps1 / dotnet restore --force-evaluate で作り直してコミットしました)。 lock の作り直しを含む Pull Request は番号を付け直せないため、この PR は閉じます。