Conversation
….sqlite New batch_coverage.py plus a --coverage flag on batch_leapp.py: - enable_coverage() turns on the developer-only App Inventory artifacts per tool: iLEAPP via --custom_artifacts_path, ALEAPP by staging the module into scripts/artifacts/ for the batch (removed afterwards, also on interrupt via the existing finally block) - aggregate() merges every report's _lava_artifacts.db (inventory tables + the framework's artifact-match registry) and manifest.json into batch_apps.sqlite with coverage views: v_apps_not_parsed, v_apps_not_parsed_rollup, v_unknown_containers, v_module_app_spread - modules matching files for 10+ different apps (userDefaults, appGrouplisting, ...) are classified generic and do not make an app count as parsed; the inventory module's own matches are excluded - batch_coverage.py is also a standalone CLI to re-aggregate an existing batch output without re-running the tools Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
With ALEAPP PR #939 porting --custom_artifacts_path from iLEAPP, both tools can now load the App Inventory module via the flag. Staging into scripts/artifacts/ remains as a fallback for ALEAPP checkouts that predate the option. Support is detected by checking the tool's source for the option string. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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
Adds a developer-facing
--coveragemode that answers "which installed apps are we not parsing?" across a batch of test images. Companion to abrignoni/iLEAPP#1680 and abrignoni/ALEAPP#938 (the App Inventory artifacts those PRs add are what this consumes).What it does
--custom_artifacts_pathoption; ALEAPP (no such option) by staging the module intoscripts/artifacts/for the duration of the batch and removing it afterwards (cleanup runs in the existingfinally, so interrupts don't leave it behind). RLEAPP/VLEAPP and compiled binaries log a warning and continue without inventory.batch_apps.sqliteat the output root:extractions(device/OS/tool identifiers per input zip, joined with manifest.json sha256),installed_apps,app_files(every file mapped to its owning app),artifact_files(which LEAPP modules matched which files, inventory module excluded),artifact_patterns.v_apps_not_parsed(per extraction),v_apps_not_parsed_rollup(ranked across extractions),v_unknown_containers(orphaned iOS app containers),v_module_app_spread(modules matching files for 10+ different apps —userDefaults,appGrouplisting, etc. — are classified generic and don't make an app count as parsed).batch_coverage.pyalso works standalone to re-aggregate an existing batch output without re-running the tools:python3 batch_coverage.py ~/reportsTesting
End-to-end with synthetic iOS and Android extractions batched into one output dir with both tools (iLEAPP/ALEAPP
app-inventorybranches): extractions table carries device identifiers from both platforms;v_apps_not_parsedcorrectly flags the Android apps including one present on disk but absent from packages.xml; the orphaned iOS container surfaces inv_unknown_containers; ALEAPP staging cleans up (git status clean after the batch); standalone re-aggregation and--dry-run(coverage disabled) verified; GUI imports unchanged (coveragedefaults to False).🤖 Generated with Claude Code