mumrah commented on PR #19159:
URL: https://github.com/apache/kafka/pull/19159#issuecomment-2707179546

   Example step summary:
   
   Commit will look like:
   
   ```
   MINOR: Disallow unused local variables
   
   Recently, we found a regression that could have been detected by static 
analysis, since a local variable wasn't being passed to a method during a 
refactoring, and was left unused. It was fixed in 
[7a749b5](https://github.com/apache/kafka/commit/7a749b589f8c98bd452b79b49cdfb182894d7f57),
  but almost slipped into 4.0. Unused variables are typically detected by IDEs, 
but this is insufficient to prevent these kinds of bugs. This change enables 
unused local variable detection in checkstyle for Kafka.
   
   A few notes on the usage:
    - There are two situations in which people actually want to have a local 
variable but not use it. First, there are `for (Type ignored: collection)` 
loops which have to loop `collection.length` number of times, but that do not 
use `ignored` in the loop body. These are typically still easier to read than a 
classical `for` loop. Second, some IDEs detect it if a return value of a 
function such as `File.delete` is not being used. In this case, people 
sometimes store the result in an unused local variable to make ignoring the 
return value explicit and to avoid the squiggly lines.
    - In Java 22, unsued local variables can be omitted by using a single 
underscore `_`. This is supported by checkstyle. In pre-22 versions, IntelliJ 
allows such variables to be named `ignored` to suppress the unused local 
variable warning. This pattern is often (but not consistently) used in the 
Kafka codebase. This is, however, not supported by checkstyle.
   
   Since we cannot switch to Java 22, yet, and we want to use automated 
detection using checkstyle, we have to resort to prefixing the unused local 
variables with `@SuppressWarnings("UnusedLocalVariable")`. We have to apply 
this in 11 cases across the Kafka codebase. While not being pretty, I'd argue 
it's worth it to prevent bugs like the one fixed in 
[7a749b5](https://github.com/apache/kafka/commit/7a749b589f8c98bd452b79b49cdfb182894d7f57).
   
   ### Committer Checklist (excluded from commit message)
   - [ ] Verify design and implementation 
   - [ ] Verify test coverage and CI build status
   - [ ] Verify documentation (including upgrade notes)
   
   ```
   
   Validation results:
   * ✅ Title is not truncated
   * ✅ Title is not too short
   * ✅ Title is not too long
   * ✅ Title has expected KAFKA/MINOR/HOTFIX
   * ✅ Body is not empty
   * ✅ PR template text not present
   * ❌ Old PR template text should be removed
   * ❌ Pull Request is approved, but no 'Reviewers' found in commit body


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to