Movatterモバイル変換


[0]ホーム

URL:


Checkstyle


  • | Last Published: 2025-06-29
  • |Version: 10.26.1
  • toTop
GitHubTwitterStackoverflowGoogleGroupsJProfiler

UnusedLocalVariable

Since Checkstyle 9.3

Description

Checks that a local variable is declared and/or assigned, but not used. Doesn't supportpattern variables yet. Doesn't checkarray components as array components are classified as different kind of variables byJLS.

Properties

namedescriptiontypedefault valuesince
allowUnnamedVariablesAllow variables named with a single underscore (known as unnamed variables in Java 21+).booleantrue10.18.0

Examples

To configure the check:

<module name="Checker">  <module name="TreeWalker">    <module name="UnusedLocalVariable">    </module>  </module></module>

Example:

class Example1 {  {    int k = 12; // violation, assign and update but never use 'k'    k++;  }  int a;  Example1(int a) { // ok, as 'a' is a constructor parameter not a local variable    this.a = 12;  }  void method(int b) {    int[] arr = {1, 2, 3};  // violation, unused named local variable 'arr'    int[] anotherArr = {1}; // ok, 'anotherArr' is accessed    anotherArr[0] = 4;  }  String convertValue(String newValue) {    String s = newValue.toLowerCase(); // violation, unused named local variable 's'    String _ = newValue.toLowerCase(); // ok, '_' is unnamed variable    return newValue.toLowerCase();  }  void read() throws IOException {    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));    String s; // violation, unused named local variable 's'    while ((s = reader.readLine()) != null) {}    try (BufferedReader reader1 = // ok, 'reader1' is a resource                 new BufferedReader(new FileReader("abc.txt"))) {}    try {    } catch (Exception e) { }  // ok, 'e' is an exception parameter  }  void loops() {    int j = 12;    for (int i = 0; j < 11; i++)  // violation, unused named local variable 'i'      for (int p = 0; j < 11; p++) p /= 2;    // ok, 'p' is used    for (Integer _ : new  int[0]) { } // ok, '_' is unnamed variable  }  void lambdas() {    Predicate<String> obj = (String str) -> true; // ok, 'str' is a lambda parameter    obj.test("Test");  }}

To configure the check to violate variables named with a single underscore if they are not used:

<module name="Checker">  <module name="TreeWalker">    <module name="UnusedLocalVariable">        <property name="allowUnnamedVariables" value="false"/>    </module>  </module></module>

Example:

class Example1 {  {    int k = 12; // violation, assign and update but never use 'k'    k++;  }  int a;  Example1(int a) { // ok, as 'a' is a constructor parameter not a local variable    this.a = 12;  }  void method(int b) {    int[] arr = {1, 2, 3};  // violation, unused local variable 'arr'    int[] anotherArr = {1}; // ok, 'anotherArr' is accessed    anotherArr[0] = 4;  }  String convertValue(String newValue) {    String s = newValue.toLowerCase(); // violation, unused local variable 's'    String _ = newValue.toLowerCase(); // violation, unused local variable '_'    return newValue.toLowerCase();  }  void read() throws IOException {    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));    String s; // violation, unused local variable 's'    while ((s = reader.readLine()) != null) {}    try (BufferedReader reader1 = // ok, 'reader1' is a resource                 new BufferedReader(new FileReader("abc.txt"))) {}    try {    } catch (Exception e) { }  // ok, 'e' is an exception parameter  }  void loops() {    int j = 12;    for (int i = 0; j < 11; i++)  // violation, unused local variable 'i'      for (int p = 0; j < 11; p++) p /= 2;   // ok, 'p' is used    for (Integer _ : new  int[0]) { } // violation, unused local variable '_'  }  void lambdas() {    Predicate<String> obj = (String str) -> true; // ok, 'str' is a lambda parameter    obj.test("Test");  }}

Example of Usage

Violation Messages

All messages can be customized if the default message doesn't suit you. Pleasesee the documentation to learn how to.

Package

com.puppycrawl.tools.checkstyle.checks.coding

Parent Module

TreeWalker



[8]ページ先頭

©2009-2025 Movatter.jp