Skip to content
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

Make sure analyzer bots catch lints and implicit downcasts configured through analysis_options.yaml #41651

Open
stereotype441 opened this issue Apr 24, 2020 · 1 comment
Assignees
Labels
analyzer-technical-debt area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. P4 type-code-health Internal changes to our tools and workflows to make them cleaner, simpler, or more maintainable

Comments

@stereotype441
Copy link
Member

Today I had to fix an implicit downcast error that I accidentally introduced (https://dart-review.googlesource.com/c/sdk/+/144780). For some reason, neither the trybots nor the post-commit bots caught this error. I haven't investigated deeply, but I suspect that the bots are running the analyzer in a way that somehow prevents it from noticing the implicit_downcasts setting in the nnbd_migration package's analysis_options.yaml file.

@bwilkerson has noticed a similar issue with lint failures--they are getting committed without breaking any bots. Since lints are configured using analysis_options.yaml, it's possible that this issue has the same root cause.

@stereotype441 stereotype441 added area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. analyzer-technical-debt labels Apr 24, 2020
@srawlins srawlins added the P4 label Jan 23, 2021
@srawlins
Copy link
Member

The new strict-casts: true analysis option has landed, I can look into how much work it is to enable it for package:analyzer and package:nnbd_migration.

@srawlins srawlins added the type-code-health Internal changes to our tools and workflows to make them cleaner, simpler, or more maintainable label Nov 29, 2021
@srawlins srawlins self-assigned this Nov 29, 2021
copybara-service bot pushed a commit that referenced this issue Dec 1, 2021
Note that changes to code are required because strict-casts also ensures
that Iterables are used in for-each loops.

Bug: #41651
Change-Id: I05a403d2ecb282fce44f8c8d24247182725c24c7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221545
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
copybara-service bot pushed a commit that referenced this issue Dec 2, 2021
There are a lot of implicit casts, so this CL includes:
benchmark/, many in test/, and tool/.

Most changes are quite mechanical, using `Object?`.

I also changed some functions to use types other than `dynamic`.

Bug: #41651
Change-Id: Id77037aae71d41e2bdca52958fdc01c43d3d51a8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/221885
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
copybara-service bot pushed a commit that referenced this issue Dec 4, 2021
Mostly this CL involves adding types to parameters which were implicitly
dynamic, and casting a few JSON results. It should be a no-op,
behaviorally.

Bug: #41651
Change-Id: I230ae4f9eef3a6c9e4dbfe60b95907402aefda05
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222027
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
copybara-service bot pushed a commit that referenced this issue Dec 6, 2021
Bug: #41651
Change-Id: I1a804bbf0c0b2d26fcd12111ec68f673f4a41a04
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222042
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
copybara-service bot pushed a commit that referenced this issue Dec 6, 2021
Bug: #41651
Change-Id: I0a165aef2b5d5cd2f97e5728bb6011a8eb70d9a5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222041
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
copybara-service bot pushed a commit that referenced this issue Dec 6, 2021
convertChildToChildren is unused within the package.

Convert Function type to function types in convertChildToChildren2,
to reduce implicit casts.

Bug: #41651
Change-Id: I60dcec3649a98c39057869f3210b6b44aba0ddd2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222040
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
copybara-service bot pushed a commit that referenced this issue Dec 7, 2021
Bug: #41651
Change-Id: I9be21ab7e8f8b61707a75d7d4b5f9a872ad0fb95
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222220
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
copybara-service bot pushed a commit that referenced this issue Dec 8, 2021
Bug: #41651
Change-Id: I622210b0029325e52be2d8ef7dada1ceca961b6e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222382
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
copybara-service bot pushed a commit that referenced this issue Dec 8, 2021
Bug: #41651
Change-Id: I3f987e6ed11b8f53ab460227a6ffc02b6fbb57f4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/222383
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
analyzer-technical-debt area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. P4 type-code-health Internal changes to our tools and workflows to make them cleaner, simpler, or more maintainable
Projects
None yet
Development

No branches or pull requests

2 participants