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

Introduce Slf4jLoggerDeclaration check #783

Merged
merged 23 commits into from
Oct 28, 2024

Conversation

mohamedsamehsalah
Copy link
Contributor

@mohamedsamehsalah mohamedsamehsalah commented Sep 8, 2023

#632

Suggested commit message:

Introduce `Slf4jLoggerDeclaration` check (#783)

@mohamedsamehsalah mohamedsamehsalah added this to the 0.14.0 milestone Sep 8, 2023
@mohamedsamehsalah mohamedsamehsalah linked an issue Sep 8, 2023 that may be closed by this pull request
3 tasks
@github-actions
Copy link

github-actions bot commented Sep 8, 2023

  • Surviving mutants in this change: 5
  • Killed mutants in this change: 16
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration 5 16

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

@mohamedsamehsalah mohamedsamehsalah force-pushed the mohamedsamehsalah/632-canonical-slf4j-logger-usage branch from 536811a to fc4d717 Compare September 8, 2023 20:15
@github-actions
Copy link

github-actions bot commented Sep 8, 2023

  • Surviving mutants in this change: 5
  • Killed mutants in this change: 16
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration 5 16

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

@mohamedsamehsalah mohamedsamehsalah force-pushed the mohamedsamehsalah/632-canonical-slf4j-logger-usage branch from fc4d717 to 3c70f11 Compare September 8, 2023 20:24
@github-actions
Copy link

github-actions bot commented Sep 8, 2023

  • Surviving mutants in this change: 5
  • Killed mutants in this change: 16
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration 5 16

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

@mohamedsamehsalah mohamedsamehsalah force-pushed the mohamedsamehsalah/632-canonical-slf4j-logger-usage branch from 3c70f11 to 5947396 Compare September 8, 2023 20:43
@sonarqubecloud
Copy link

sonarqubecloud bot commented Sep 8, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 2 Code Smells

91.4% 91.4% Coverage
0.0% 0.0% Duplication

@github-actions
Copy link

github-actions bot commented Sep 8, 2023

  • Surviving mutants in this change: 5
  • Killed mutants in this change: 16
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration 5 16

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

@rickie rickie modified the milestones: 0.14.0, 0.15.0 Oct 4, 2023
Copy link
Member

@Stephan202 Stephan202 left a comment

Choose a reason for hiding this comment

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

Quick skim; hope this helps :)


@Override
public Description matchClass(ClassTree tree, VisitorState state) {
if (tree.getKind() == Kind.INTERFACE || !TEST_CLASS_WITH_LOGGER.matches(tree, state)) {
Copy link
Member

Choose a reason for hiding this comment

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

I don't think we need to skip interfaces: for those we can still suggest (but not auto-fix) the canonical field name.

(Separately from that we should drop redundant modifiers, but that should be a separate check, modeled after this Checkstyle rule.)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I don't think we need to skip interfaces

The intention was to not apply modifiers to inteface variables but still suggest/fix field name.

: for those we can still suggest (but not auto-fix) the canonical field name.

Why only suggest and not auto-fix ?

(Separately from that we should drop redundant modifiers, but that should be a separate check, modeled after this Checkstyle rule.)

Should this check be part of this PR ?

Comment on lines 100 to 102
@Override
public Description matchMethodInvocation(MethodInvocationTree tree, VisitorState state) {
if (!GET_LOGGER_METHOD.matches(tree, state)) {
Copy link
Member

Choose a reason for hiding this comment

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

We're now creating separate fixes for the field declaration (modifiers + name) and for the referenced class. I wonder whether this means that we should have two separate checks. I can imagine that some users will appreciate the second, while finding the first too conservative.

Copy link
Contributor Author

@mohamedsamehsalah mohamedsamehsalah Nov 25, 2023

Choose a reason for hiding this comment

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

Pushed a change using TreeScanner (Conceptually still two checks usingvisitClass & visitMethodInvocationTree).

What do you think about making the separation into an EP flag ?

if (LOGGER.matches(member, state)) {
VariableTree variable = (VariableTree) member;
SuggestedFixes.addModifiers(
member, state, Modifier.PRIVATE, Modifier.STATIC, Modifier.FINAL)
Copy link
Member

Choose a reason for hiding this comment

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

Making the field final or private could make the code fail to compile. Likely this is still the right trade-off, but perhaps something worth calling out.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Does it make sense to make the suggested modifiers EP flags instead ?

@mohamedsamehsalah mohamedsamehsalah force-pushed the mohamedsamehsalah/632-canonical-slf4j-logger-usage branch from 5947396 to 61626b7 Compare November 25, 2023 20:36
Copy link

  • Surviving mutants in this change: 6
  • Killed mutants in this change: 19
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration$1 3 4
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration 3 15

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

Copy link

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 2 Code Smells

89.5% 89.5% Coverage
0.0% 0.0% Duplication

Copy link

  • Surviving mutants in this change: 6
  • Killed mutants in this change: 19
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration$1 3 4
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration 3 15

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

@rickie rickie modified the milestones: 0.15.0, 0.16.0 Feb 10, 2024
Copy link
Member

@rickie rickie left a comment

Choose a reason for hiding this comment

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

Some comments we discussed offline :).

@mohamedsamehsalah mohamedsamehsalah force-pushed the mohamedsamehsalah/632-canonical-slf4j-logger-usage branch from 4142606 to a54db09 Compare March 3, 2024 16:27
Copy link
Contributor Author

@mohamedsamehsalah mohamedsamehsalah left a comment

Choose a reason for hiding this comment

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

Sorry for the slow progress 🐢

@mohamedsamehsalah mohamedsamehsalah requested a review from rickie March 3, 2024 16:28
Copy link

github-actions bot commented Mar 3, 2024

  • Surviving mutants in this change: 10
  • Killed mutants in this change: 15
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration$1 7 2
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration 3 13

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

1 similar comment
Copy link

github-actions bot commented Mar 3, 2024

  • Surviving mutants in this change: 10
  • Killed mutants in this change: 15
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration$1 7 2
🧟tech.picnic.errorprone.bugpatterns.Slf4jLogDeclaration 3 13

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

Copy link

  • Surviving mutants in this change: 2
  • Killed mutants in this change: 47
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLoggerDeclaration 2 38
🎉tech.picnic.errorprone.bugpatterns.EmptyMethod 0 3
🎉tech.picnic.errorprone.bugpatterns.FormatStringConcatenation$ReplacementArgumentsConstructor 0 2
🎉tech.picnic.errorprone.utils.MoreASTHelpers 0 2
🎉tech.picnic.errorprone.bugpatterns.FormatStringConcatenation 0 2

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

Copy link
Member

@rickie rickie left a comment

Choose a reason for hiding this comment

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

Nice improvements!!

@rickie rickie force-pushed the mohamedsamehsalah/632-canonical-slf4j-logger-usage branch from ebfe327 to b7621f2 Compare October 28, 2024 08:53
Copy link

Copy link

  • Surviving mutants in this change: 2
  • Killed mutants in this change: 47
class surviving killed
🧟tech.picnic.errorprone.bugpatterns.Slf4jLoggerDeclaration 2 38
🎉tech.picnic.errorprone.bugpatterns.EmptyMethod 0 3
🎉tech.picnic.errorprone.bugpatterns.FormatStringConcatenation$ReplacementArgumentsConstructor 0 2
🎉tech.picnic.errorprone.utils.MoreASTHelpers 0 2
🎉tech.picnic.errorprone.bugpatterns.FormatStringConcatenation 0 2

Mutation testing report by Pitest. Review any surviving mutants by inspecting the line comments under Files changed.

@Stephan202 Stephan202 merged commit 2b1dbd9 into master Oct 28, 2024
16 checks passed
@Stephan202 Stephan202 deleted the mohamedsamehsalah/632-canonical-slf4j-logger-usage branch October 28, 2024 11:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

Canonical SLF4J Logger usage
4 participants