[Logging] Refactor ESLoggerUsageChecker #58962
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Refers to #49087
This is a draft PR to refactor ESLoggerUsageChecker, a static analysis tool to verify correct usages of logger. Here are the steps taken to improve the structure of the code
move
WrongLoggerUsage
class into its own filemove
ClassChecker
into its own filemove
MethodChecker
into its own file, along with all staticType
since this is the only place they are referencedmove all
BasicValue
andBasicInterpreter
subclasses into MethodChecker.java as well since they are not used anywhere elseInside MethodChecker.java
refactor
findBadLoggerUsages
, which is where the bulk of checks arelineNumber
,methodNode
,instructions
,logMessageFrames
,arraySizeFrames
instance variables since they are accessed in multiple methods and avoid passing around too muchfindBadLoggerUsages
is broken down to 2 methodsanalyzeMethod
to populateinstructions
,logMessageFrames
,arraySizeFrames
walkInstructions
to check each instructionswalkInstructions
checks for Opcode and callverifyMethodUsage
orverifyConstructorUsage
with necessary argumentsverifyMethodUsage
is renamed from oldverifyLoggerUsage
verifyConstructorUsage
is extracted from oldfindBadLoggerUsages
fix SonarLint warnings