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

Propagate additional safety information #2230

Merged
merged 5 commits into from
Apr 27, 2022
Merged

Conversation

carterkozak
Copy link
Contributor

==COMMIT_MSG==
Propagate additional safety information in the SafeLoggingPropagation check and automated fixes:

  1. Method return statements are analyzed to determine safety of unmarked methods
  2. Types are annotated based on the safety of their toString method, which is a reasonable heuristic for value types that may be logged.
    ==COMMIT_MSG==

These two checks work together nicely when types define a toString: the inputs to the toString (assuming string concatenation, we haven't implemented anything special for StringBuilder accumulation) are combined into an annotation on the toString method, which is applied at the type level in the next run.

Possible downsides?

This may result in a lot of annotations.
Our automation can restrict safety, but i never eases safety -- we can mark a method @Unsafe or @DoNotLog, but never @Safe.

@changelog-app
Copy link

changelog-app bot commented Apr 26, 2022

Generate changelog in changelog/@unreleased

Type

  • Feature
  • Improvement
  • Fix
  • Break
  • Deprecation
  • Manual task
  • Migration

Description

Propagate additional safety information in the SafeLoggingPropagation check and automated fixes:

  1. Method return statements are analyzed to determine safety of unmarked methods
  2. Types are annotated based on the safety of their toString method, which is a reasonable heuristic for value types that may be logged.

Check the box to generate changelog(s)

  • Generate changelog entry

Copy link
Contributor

@fawind fawind left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense!

@bulldozer-bot bulldozer-bot bot merged commit c6dadc4 into develop Apr 27, 2022
@bulldozer-bot bulldozer-bot bot deleted the ckozak/annotate_methods branch April 27, 2022 10:53
@svc-autorelease
Copy link
Collaborator

Released 4.117.0

bulldozer-bot bot pushed a commit to palantir/witchcraft-api that referenced this pull request Apr 27, 2022
###### _excavator_ is a bot for automating changes across repositories.

Changes produced by the roomba/latest-baseline-oss check.

# Release Notes
## 4.117.0
| Type | Description | Link |
| ---- | ----------- | ---- |
| Improvement | Propagate additional safety information in the `SafeLoggingPropagation` check and automated fixes:<br>1. Method return statements are analyzed to determine safety of unmarked methods<br>2. Types are annotated based on the safety of their `toString` method, which is a reasonable heuristic for value types that may be logged. | palantir/gradle-baseline#2230 |



To enable or disable this check, please contact the maintainers of Excavator.
This was referenced Apr 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants