Skip to content

Refactor: Remove unnecessary lint suppressions#3373

Merged
vegaro merged 2 commits into
mainfrom
cursor/unnecessary-lint-suppressions-d869
Apr 21, 2026
Merged

Refactor: Remove unnecessary lint suppressions#3373
vegaro merged 2 commits into
mainfrom
cursor/unnecessary-lint-suppressions-d869

Conversation

@cursor

@cursor cursor Bot commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Checklist

  • If applicable, unit tests
  • If applicable, create follow-up issues for purchases-ios and hybrids

Motivation

A scheduled suppression-cleanup pass identified broad lint suppressions that can be replaced with more explicit control flow and concrete exception handling. This PR removes one unnecessary suppression by refactoring the underlying code while keeping behavior unchanged.

Description

Repository analysis summary

  • Scanned the repository for suppression annotations (@Suppress and @SuppressLint) and found widespread usage across production, tests, and sample apps.
  • Reviewed detekt baseline files:
    • config/detekt/detekt-baseline.xml contains active baseline issues (225 IDs).
    • purchases/detekt-baseline.xml contains legacy whitelist entries.
    • examples/purchase-tester/detekt-baseline.xml is currently empty.

Suppression removed in this PR

  • File: examples/purchase-tester/src/main/java/com/revenuecat/purchasetester/proxysettings/ProxySettingsBottomSheetViewModel.kt
  • Removed: @Suppress("TooGenericExceptionCaught") on performRequest

Refactor details

  • Replaced a broad catch (Exception) block with specific exception handling:
    • IOException
    • JSONException
    • IllegalArgumentException
  • Replaced error(...) for non-200 HTTP responses with explicit error state update and early return.
  • Preserved the same user-visible behavior: failures still update UI state to ProxySettingsState.Error.

Validation

  • Attempted to run ./gradlew :examples:purchase-tester:detekt but this project has no module-level detekt task.
  • Attempted to run ./gradlew :examples:purchase-tester:lint, but lint is blocked in this environment due missing Android SDK configuration (ANDROID_HOME/sdk.dir).
  • Refactor is limited and behavior-preserving by construction (same code path outcomes, narrower exception handling).
Open in Web View Automation 

Note

Low Risk
Low risk sample-app refactor that narrows exception handling and replaces a hard failure with an explicit error-state update; behavior changes only in how non-200 responses are surfaced to the UI.

Overview
Refactors ProxySettingsBottomSheetViewModel.performRequest to remove the broad @Suppress("TooGenericExceptionCaught") by catching IOException, JSONException, and IllegalArgumentException explicitly.

Non-200 proxy responses no longer throw via error(...); they now update ProxySettingsState.Error and return early, keeping failures contained to UI state updates.

Reviewed by Cursor Bugbot for commit ba56652. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Cesar de la Vega <vegaro@users.noreply.github.com>
@vegaro vegaro added the pr:other label Apr 21, 2026 — with Cursor
@vegaro vegaro marked this pull request as ready for review April 21, 2026 08:17
@vegaro vegaro requested a review from a team as a code owner April 21, 2026 08:17
@vegaro vegaro enabled auto-merge April 21, 2026 08:17
@vegaro vegaro added this pull request to the merge queue Apr 21, 2026
@codecov

codecov Bot commented Apr 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.34%. Comparing base (e7967c2) to head (ba56652).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #3373   +/-   ##
=======================================
  Coverage   79.34%   79.34%           
=======================================
  Files         354      354           
  Lines       14268    14268           
  Branches     1951     1951           
=======================================
  Hits        11321    11321           
  Misses       2144     2144           
  Partials      803      803           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Merged via the queue into main with commit 41e115f Apr 21, 2026
36 checks passed
@vegaro vegaro deleted the cursor/unnecessary-lint-suppressions-d869 branch April 21, 2026 08:56
matteinn pushed a commit to matteinn/purchases-android that referenced this pull request Apr 28, 2026
**This is an automatic release.**

## RevenueCat SDK
### 🐞 Bugfixes
* fix: move Google BillingClient connection off the main thread (RevenueCat#3369)
via Toni Rico (@tonidero)
* [EXTERNAL] fix(google): guard showInAppMessages against BillingClient
runtime crashes (RevenueCat#3367) by @matteinn (RevenueCat#3368) via Monika Mateska
(@MonikaMateska)

## RevenueCatUI SDK
### Paywallv2
#### 🐞 Bugfixes
* Add Workflows network layer (RevenueCat#3300) via Cesar de la Vega (@vegaro)

### 🔄 Other Changes
* Fix `revenuecat.useWorkflowsEndpoint` compiler flag (RevenueCat#3374) via Cesar
de la Vega (@vegaro)
* Create paywall from workflow response. Add `USE_WORKFLOWS_ENDPOINT`
BuildConfig (RevenueCat#3350) via Cesar de la Vega (@vegaro)
* Refactor: Remove unnecessary lint suppressions (RevenueCat#3373) via cursor[bot]
(@cursor[bot])
* Bump fastlane-plugin-revenuecat_internal from `a1eed48` to `b822f01`
(RevenueCat#3371) via dependabot[bot] (@dependabot[bot])
* Bump fastlane from 2.232.2 to 2.233.0 (RevenueCat#3370) via dependabot[bot]
(@dependabot[bot])
* Attempt to fix `AssertionError` "ms is denormalized" in
`QueryPurchasesUseCaseTest` (RevenueCat#3361) via Cesar de la Vega (@vegaro)
* Update baseline profiles (RevenueCat#3296) via Jaewoong Eum (@skydoves)
* fix: reduce precision for flaky HeaderDirectHeroImage snapshot (RevenueCat#3362)
via Cesar de la Vega (@vegaro)
* Fix test failures reported twice (RevenueCat#3360) via Cesar de la Vega
(@vegaro)
* refactor: extract `updateStateFromOffering` in `PaywallViewModel`
(RevenueCat#3359) via Cesar de la Vega (@vegaro)
* [Fix] Include parent tabs component_name in tab-control switch
interaction events (RevenueCat#3358) via Monika Mateska (@MonikaMateska)
* Refactor: Remove unnecessary lint suppressions (RevenueCat#3348) via cursor[bot]
(@cursor[bot])
* fix: always upload CI test results even when tests fail (RevenueCat#3357) via
Cesar de la Vega (@vegaro)
* refactor: extract `RevenueCatDialogScaffold` (RevenueCat#3355) via Cesar de la
Vega (@vegaro)
* Fix Slack notifications for nightly integration tests (RevenueCat#3354) via Toni
Rico (@tonidero)
* UI events for paywall component interactions (RevenueCat#3287) via Monika
Mateska (@MonikaMateska)
* Bump fastlane-plugin-revenuecat_internal from `20911d1` to `a1eed48`
(RevenueCat#3351) via dependabot[bot] (@dependabot[bot])

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Primarily a version bump and release automation updates (docs
deploy/redirect and changelog); no functional library code changes
beyond updating embedded version constants.
> 
> **Overview**
> Cuts the `10.2.1` release by updating version references across the
repo (Gradle `VERSION_NAME`, internal `frameworkVersion`, sample/test
app dependency pins, and `.version`).
> 
> Updates the docs release pipeline and website redirect to publish and
point at `10.2.1`, and refreshes `CHANGELOG.md`/`CHANGELOG.latest.md`
with the 10.2.1 release notes.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
a0a325b. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants