Skip to content

Fix Ignore Always detection #272

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 21 commits into from
Apr 23, 2025
Merged

Fix Ignore Always detection #272

merged 21 commits into from
Apr 23, 2025

Conversation

smaye81
Copy link
Member

@smaye81 smaye81 commented Apr 22, 2025

For context, see bufbuild/protovalidate-go#221.

This applies the same fix as the above PR. Namely, that it collapses the discrete ignoreXXX member variables into a single enum containing the ignore constraint. Then, we can detect at evaluation time whether validation should be skipped.

Also note that because Go and Java are similar in logic, this comment on protovalidate-go also applies. It may be nice to refactor this overall at some point also.

smaye81 and others added 20 commits March 28, 2025 14:05
This enhances the current isEmail validation by using a consistent regex
that will be used across protovalidate implementations.
This beefs up the validation for the following:

IP address (v4 and v6)
IP prefix (v4 and v6)
Hostname / Port
This ports the validation logic from protovalidate-go for validating
URIs and URI references.
This ports the ipv6 fix from
bufbuild/protovalidate-go#215.

For context see the description on the above PR. The summary is that
this fixes the validation for some corner cases of IPv6 address
validation. Namely:

* Adds a check that an IPv6 address can't begin or end on a single
colon.
* Adds a check to fail-fast on invalid hextets.
Bumps
[com.google.errorprone:error_prone_core](https://github.com/google/error-prone)
from 2.37.0 to 2.38.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/error-prone/releases">com.google.errorprone:error_prone_core's
releases</a>.</em></p>
<blockquote>
<h2>Error Prone 2.38.0</h2>
<p>New checks:</p>
<ul>
<li><a
href="https://errorprone.info/bugpattern/AddNullMarkedToPackageInfo"><code>AddNullMarkedToPackageInfo</code></a>:
adds <a
href="https://jspecify.dev/docs/api/org/jspecify/annotations/NullMarked.html"><code>@org.jspecify.annotations.NullMarked</code></a>
annotation to package-info files</li>
<li><a
href="https://errorprone.info/bugpattern/IntLiteralCast"><code>IntLiteralCast</code></a>:
Suggests a literal of the desired type instead of casting an int literal
to a long, float, or double</li>
<li><a
href="https://errorprone.info/bugpattern/MisleadingEmptyVarargs"><code>MisleadingEmptyVarargs</code></a>:
Discourages calling varargs methods that expect at least one argument
with no arguments, like Mockito's <code>thenThrow</code></li>
<li><a
href="https://errorprone.info/bugpattern/PreconditionsExpensiveString"><code>PreconditionsExpensiveString</code></a>:
Discourages expensive string formatting in Guava
<code>Preconditions</code> checks</li>
<li><a
href="https://errorprone.info/bugpattern/SelfSet"><code>SelfSet</code></a>:
Detects mistakes like <code>proto.setFoo(proto.getFoo())</code></li>
<li><a
href="https://errorprone.info/bugpattern/UnnecessaryCopy"><code>UnnecessaryCopy</code></a>:
detect unnecessary copies of proto Lists and Maps.</li>
</ul>
<p>Closed issues: <a
href="https://redirect.github.com/google/error-prone/issues/4924">#4924</a>,
<a
href="https://redirect.github.com/google/error-prone/issues/4897">#4897</a>,
<a
href="https://redirect.github.com/google/error-prone/issues/4995">#4995</a></p>
<p>Full changelog: <a
href="https://github.com/google/error-prone/compare/v2.37.0...v2.38.0">https://github.com/google/error-prone/compare/v2.37.0...v2.38.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/google/error-prone/commit/a07bd3e24904d287bfb5a4c0cc01552ff5589d81"><code>a07bd3e</code></a>
Release Error Prone 2.38.0</li>
<li><a
href="https://github.com/google/error-prone/commit/09fd394fb3eb350ca3785ee28b253add2ef7bbf3"><code>09fd394</code></a>
Fix typo in NullTernary.md</li>
<li><a
href="https://github.com/google/error-prone/commit/4171fd71ceed57e27ac63a6d3180ff704b340dce"><code>4171fd7</code></a>
FindIdentifiers: find binding variables declared by enclosing or earlier
<code>if</code>...</li>
<li><a
href="https://github.com/google/error-prone/commit/d78f515d82c884f7c2ea4f936695184f7fd5e1aa"><code>d78f515</code></a>
Audit each use of ElementKind.LOCAL_VARIABLE, and add BINDING_VARIABLE
if app...</li>
<li><a
href="https://github.com/google/error-prone/commit/6f94a97b8edd9d1d468151fa8dc907e6bef23634"><code>6f94a97</code></a>
Tolerate default cases in switches as being present to handle version
skew</li>
<li><a
href="https://github.com/google/error-prone/commit/0223abb5ed30268e6519fe8928acc4e03357349d"><code>0223abb</code></a>
Support <code>@LenientFormatString</code> in
<code>LenientFormatStringValidation</code>.</li>
<li><a
href="https://github.com/google/error-prone/commit/cb7dfafdca02d5f0a2b3e6b838a8a3efc3e716d3"><code>cb7dfaf</code></a>
Remove the <code>Side</code> enum.</li>
<li><a
href="https://github.com/google/error-prone/commit/d64c9cee1802f647e086e741df2df13f785b0170"><code>d64c9ce</code></a>
Promote error prone check TestExceptionChecker to ERROR within Google
(blaze ...</li>
<li><a
href="https://github.com/google/error-prone/commit/c0ce4751516d17934436533398d6a5fa250c5867"><code>c0ce475</code></a>
Move <code>TargetType</code> to a top-level class alongside
<code>ASTHelpers</code>.</li>
<li><a
href="https://github.com/google/error-prone/commit/90b8efb3b7f46d95451cd3097537b8089a07af0f"><code>90b8efb</code></a>
Allow binding to BINDING_VARIABLEs in GuardedByBinder.</li>
<li>Additional commits viewable in <a
href="https://github.com/google/error-prone/compare/v2.37.0...v2.38.0">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.google.errorprone:error_prone_core&package-manager=gradle&previous-version=2.37.0&new-version=2.38.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)

</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps net.ltgt.errorprone from 4.1.0 to 4.2.0.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=net.ltgt.errorprone&package-manager=gradle&previous-version=4.1.0&new-version=4.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [org.junit:junit-bom](https://github.com/junit-team/junit5) from
5.12.1 to 5.12.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/junit-team/junit5/releases">org.junit:junit-bom's
releases</a>.</em></p>
<blockquote>
<p>JUnit 5.12.2 = Platform 1.12.2 + Jupiter 5.12.2 + Vintage 5.12.2</p>
<p>See <a
href="https://junit.org/junit5/docs/5.12.2/release-notes/">Release
Notes</a>.</p>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit5/compare/r5.12.1...r5.12.2">https://github.com/junit-team/junit5/compare/r5.12.1...r5.12.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/junit-team/junit5/commit/0a446598f2b90bb0f52f1945f08755b430ec474b"><code>0a44659</code></a>
Release 5.12.2</li>
<li><a
href="https://github.com/junit-team/junit5/commit/4c7dfdc0c08b7b0f72aff22b3c0cf8471a3c1ed5"><code>4c7dfdc</code></a>
Finalize 5.12.2 release notes</li>
<li><a
href="https://github.com/junit-team/junit5/commit/561613e18307ce164e0f9c9eea8a5e00c12122af"><code>561613e</code></a>
Fix handling of <code>CleanupMode.ON_SUCCESS</code></li>
<li><a
href="https://github.com/junit-team/junit5/commit/19d07d2306073d1cb0663073e66ee9e752df6c13"><code>19d07d2</code></a>
Add 5.12.2 release notes from template</li>
<li><a
href="https://github.com/junit-team/junit5/commit/803cbb6d6e8bcdc62cd9fda5ea6913805f656bb7"><code>803cbb6</code></a>
Add build parameter for enabling dry-run mode for test execution</li>
<li><a
href="https://github.com/junit-team/junit5/commit/eb43e62247c70c29473cb81825ab0361c6ff3d5f"><code>eb43e62</code></a>
Back to snapshots for further development</li>
<li>See full diff in <a
href="https://github.com/junit-team/junit5/compare/r5.12.1...r5.12.2">compare
view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.junit:junit-bom&package-manager=gradle&previous-version=5.12.1&new-version=5.12.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)

</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…#269)

Bumps
[com.diffplug.spotless:spotless-plugin-gradle](https://github.com/diffplug/spotless)
from 7.0.2 to 7.0.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/diffplug/spotless/releases">com.diffplug.spotless:spotless-plugin-gradle's
releases</a>.</em></p>
<blockquote>
<h2>Gradle Plugin v7.0.3</h2>
<h3>Changed</h3>
<ul>
<li>Use palantir-java-format 2.57.0 on Java 21. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2447">#2447</a>)</li>
<li>Re-try <code>npm install</code> with <code>--prefer-online</code>
after <code>ERESOLVE</code> error. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2448">#2448</a>)</li>
<li>Apply Gradle's strict plugin types validation to the Spotless
plugin. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2454">#2454</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/diffplug/spotless/commit/1b1a4fbbb446585627f9da03eab5986d73afa457"><code>1b1a4fb</code></a>
Published gradle/7.0.3</li>
<li><a
href="https://github.com/diffplug/spotless/commit/0fa3cabc9ed5780f8d9033b0c1d27d81c1d750c2"><code>0fa3cab</code></a>
Published lib/3.1.1</li>
<li><a
href="https://github.com/diffplug/spotless/commit/0fe8f9b2ab825e53f9c78c91f604f34831612929"><code>0fe8f9b</code></a>
Update README.md for android kotlin callouts (<a
href="https://redirect.github.com/diffplug/spotless/issues/2438">#2438</a>)</li>
<li><a
href="https://github.com/diffplug/spotless/commit/d25f04de3e75030c91962739bc99ea7d377d7678"><code>d25f04d</code></a>
Minor tweak.</li>
<li><a
href="https://github.com/diffplug/spotless/commit/fa3fd1e6cb99a6bb3b2a9c8b262db4666edf6ca7"><code>fa3fd1e</code></a>
Add the cool blockquote warning trick to the other Android spot.</li>
<li><a
href="https://github.com/diffplug/spotless/commit/60993fdedff91eeebf2ef016893b1ee433811a3f"><code>60993fd</code></a>
Fix the Android Kotlin warning and adjust its position.</li>
<li><a
href="https://github.com/diffplug/spotless/commit/0426db1e7e66b6434bc625cc84c5d4e7bd03a0ce"><code>0426db1</code></a>
Apply Gradle's strict plugin types validation to the Spotless plugin in
prepa...</li>
<li><a
href="https://github.com/diffplug/spotless/commit/48b4cdeaf3653f77d8c764849b5fb48207b3cc27"><code>48b4cde</code></a>
fix(deps): update dependency org.mockito:mockito-core to v5.17.0 (<a
href="https://redirect.github.com/diffplug/spotless/issues/2461">#2461</a>)</li>
<li><a
href="https://github.com/diffplug/spotless/commit/81f2f8bb742a98c2f7e69bc7e2e10fb6b2d6c75c"><code>81f2f8b</code></a>
fix(deps): update dependency org.mockito:mockito-core to v5.17.0</li>
<li><a
href="https://github.com/diffplug/spotless/commit/fc0ec004f0b52ca33e5030efc0b2ddfb8e1b4990"><code>fc0ec00</code></a>
Update CHANGES.md for enabling Gradle's stricter plugin types
validation</li>
<li>Additional commits viewable in <a
href="https://github.com/diffplug/spotless/compare/gradle/7.0.2...gradle/7.0.3">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.diffplug.spotless:spotless-plugin-gradle&package-manager=gradle&previous-version=7.0.2&new-version=7.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@smaye81 smaye81 requested review from jchadwick-buf, pkwarren and rodaine and removed request for jchadwick-buf and pkwarren April 22, 2025 18:04
@smaye81 smaye81 merged commit a0f60fc into main Apr 23, 2025
4 checks passed
@smaye81 smaye81 deleted the sayers/ignore_always branch April 23, 2025 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants