[PR #2850] fix(android): require explicit invoke coverage state #5436

Open
opened 2026-10-31 01:06:37 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/2850
Author: @LcokHcak
Created: 10/13/2026
Status: 🔄 Open

Base: main ← Head: codex/rea-android-invoke-coverage-json


📝 Commits (7)

  • b211180 fix(android): require explicit invoke coverage state
  • 223e32a chore: sync captured main and retain explicit Android coverage
  • 174f64a test(android): require invoke coverage state
  • 8dfa495 Merge branch 'main' into codex/rea-android-invoke-coverage-json
  • 9f74bb9 Merge branch 'main' into codex/rea-android-invoke-coverage-json
  • 92ae565 Merge branch 'main' into codex/rea-android-invoke-coverage-json
  • a1093d2 fix(android): reject invoke coverage without site evidence

📊 Changes

3 files changed (+101 additions, -37 deletions)

View changed files

📝 src/android/JadxProtocol.ts (+30 -20)
📝 src/domain/android/androidAnalysis.ts (+2 -2)
📝 tests/boundary/android/JadxAnalysis.test.ts (+69 -15)

📄 Description

Summary

  • Require direct_invokes_exhaustive in the Android result schema while allowing null when coverage is unavailable.
  • Assert that unavailable and empty reference rows expose null in the boundary tests.
  • Reject upstream reference rows that claim exhaustive or partial invoke coverage without providing a direct_invokes site list. Keep valid true and false coverage values when the list is present.

The analyzer already serializes this field as reference.direct_invokes_exhaustive ?? null. Keeping the schema optional made the parsed output type include undefined, which is not a valid JsonValue and caused TS2322 in JadxAnalysis.ts after #2439 was merged.

Verification

  • npm run deps:check — passed after npm ci.
  • npx vitest run tests/boundary/android/JadxAnalysis.test.ts tests/boundary/android/jadxProtocol.test.ts — 16 tests passed.
  • npm run typecheck — passed.
  • Targeted oxlint and oxfmt --check on the changed files — passed.
  • npm run lint — blocked by src/dotnet/ManagedCilDecoding.test.ts:248 exceeding the max-lines-per-function limit, outside this patch. The latest main has a separate edit to that test.
  • The previous GitHub CI run also found Turkish README link drift, outside this PR's two Android files; the new commit will trigger fresh checks.

Follow-up to #2439; this commit was pushed to its source branch after #2439 had already merged, so it needs a separate PR.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/2850 **Author:** [@LcokHcak](https://github.com/LcokHcak) **Created:** 10/13/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `codex/rea-android-invoke-coverage-json` --- ### 📝 Commits (7) - [`b211180`](https://github.com/morluto/rea/commit/b211180d6364d322ca9e1ca1e822eb032e385c9f) fix(android): require explicit invoke coverage state - [`223e32a`](https://github.com/morluto/rea/commit/223e32a692447476deab27124627211db064a071) chore: sync captured main and retain explicit Android coverage - [`174f64a`](https://github.com/morluto/rea/commit/174f64a0d33c463555865530e2f5906c176e4c62) test(android): require invoke coverage state - [`8dfa495`](https://github.com/morluto/rea/commit/8dfa49577b0b0bf0687a7cce5e743893d0bde43c) Merge branch 'main' into codex/rea-android-invoke-coverage-json - [`9f74bb9`](https://github.com/morluto/rea/commit/9f74bb9b3ec7de67de2d038620ce3793c5f3814f) Merge branch 'main' into codex/rea-android-invoke-coverage-json - [`92ae565`](https://github.com/morluto/rea/commit/92ae56523a6d8a63f4ea65fbf0b65e36360e6f40) Merge branch 'main' into codex/rea-android-invoke-coverage-json - [`a1093d2`](https://github.com/morluto/rea/commit/a1093d263b2afd85b5dfc8e73d5369a3b6ac7f93) fix(android): reject invoke coverage without site evidence ### 📊 Changes **3 files changed** (+101 additions, -37 deletions) <details> <summary>View changed files</summary> 📝 `src/android/JadxProtocol.ts` (+30 -20) 📝 `src/domain/android/androidAnalysis.ts` (+2 -2) 📝 `tests/boundary/android/JadxAnalysis.test.ts` (+69 -15) </details> ### 📄 Description ## Summary - Require `direct_invokes_exhaustive` in the Android result schema while allowing `null` when coverage is unavailable. - Assert that unavailable and empty reference rows expose `null` in the boundary tests. - Reject upstream reference rows that claim exhaustive or partial invoke coverage without providing a `direct_invokes` site list. Keep valid `true` and `false` coverage values when the list is present. The analyzer already serializes this field as `reference.direct_invokes_exhaustive ?? null`. Keeping the schema optional made the parsed output type include `undefined`, which is not a valid `JsonValue` and caused TS2322 in `JadxAnalysis.ts` after #2439 was merged. ## Verification - `npm run deps:check` — passed after `npm ci`. - `npx vitest run tests/boundary/android/JadxAnalysis.test.ts tests/boundary/android/jadxProtocol.test.ts` — 16 tests passed. - `npm run typecheck` — passed. - Targeted `oxlint` and `oxfmt --check` on the changed files — passed. - `npm run lint` — blocked by `src/dotnet/ManagedCilDecoding.test.ts:248` exceeding the max-lines-per-function limit, outside this patch. The latest `main` has a separate edit to that test. - The previous GitHub CI run also found Turkish README link drift, outside this PR's two Android files; the new commit will trigger fresh checks. Follow-up to #2439; this commit was pushed to its source branch after #2439 had already merged, so it needs a separate PR. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#5436
No description provided.