Project Information
Project:
code-grader (spotbugsMain)
SpotBugs version: 4.7.0
Code analyzed:
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TestSuite$TestCaseIterator.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/ParameterHandling.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/FileUtils$2.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TestSuite.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TestSuiteProperties.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/Parser.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/ExternalProcess.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TestCaseProperties.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/DefaultBuildCase.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/Message.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TestCase.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/Stage.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/OracleProperties.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TestSuite$Detail.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/FileUtils$1.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/run/CLI.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/Logging.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/SubmissionSet.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/BuildProperties.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/CopyPatterns.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TestConfigurationError.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TCProcess.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/FileUtils.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/StringParser.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/Submission.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/FileUtils$3.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TestCasePropertiesBase.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/InternalTestLauncher.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/Stage$BuildResult.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/FileUtils$4.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/SubmissionDateOptions.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/ExternalProcess$StreamReader.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/Deferred.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/BooleanParser.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/IntegerParser.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/Pair.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/JUnit5Oracle.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/FilesExistOracle.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/Scanner.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/OracleResult.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/TAPOracle.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/SmartOracle.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/ExternalOracle.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/Oracle$ScoringOptions.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/NumberToken.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/SelfScoredOracle.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/WhiteSpaceToken.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/Oracle.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/OracleFactory.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/Token.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/PunctuationToken.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/StatusOracle.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/oracle/StringToken.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/Assignment.class
- /home/runner/work/code-grader/code-grader/code-grader/build/classes/java/main/edu/odu/cs/zeil/codegrader/TestSuite$BuildResult.class
Metrics
3748 lines of code analyzed,
in 55 classes,
in 3 packages.
High Priority Warnings |
7 |
1.87 |
Medium Priority Warnings |
21 |
5.60 |
Total Warnings
|
28
|
7.47
|
(* Defects per Thousand lines of non-commenting source statements)
Contents
Summary
Warnings
Click on a warning row to see full context information.
RV
|
Exceptional return value of java.io.File.mkdirs() ignored in edu.odu.cs.zeil.codegrader.Stage.setupSubmitterStage() |
|
Bug type RV_RETURN_VALUE_IGNORED_BAD_PRACTICE (click for details)
In class edu.odu.cs.zeil.codegrader.Stage In method edu.odu.cs.zeil.codegrader.Stage.setupSubmitterStage() Called method java.io.File.mkdirs() At Stage.java:[line 295]
|
RV
|
Exceptional return value of java.io.File.delete() ignored in edu.odu.cs.zeil.codegrader.TestCase.executeExternalTestCommand(Submission, Stage, String) |
|
Bug type RV_RETURN_VALUE_IGNORED_BAD_PRACTICE (click for details)
In class edu.odu.cs.zeil.codegrader.TestCase In method edu.odu.cs.zeil.codegrader.TestCase.executeExternalTestCommand(Submission, Stage, String) Called method java.io.File.delete() At TestCase.java:[line 167]
|
LG
|
Changes to logger could be lost in edu.odu.cs.zeil.codegrader.Logging.setup() |
|
Bug type LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE (click for details)
In class edu.odu.cs.zeil.codegrader.Logging In method edu.odu.cs.zeil.codegrader.Logging.setup() Local variable named logger At Logging.java:[line 24] Another occurrence at Logging.java:[line 29] Another occurrence at Logging.java:[line 37]
|
Dm
|
Found reliance on default encoding in edu.odu.cs.zeil.codegrader.FileUtils.writeTextFile(Path, String): new java.io.FileWriter(File) |
|
Bug type DM_DEFAULT_ENCODING (click for details)
In class edu.odu.cs.zeil.codegrader.FileUtils In method edu.odu.cs.zeil.codegrader.FileUtils.writeTextFile(Path, String) Called method new java.io.FileWriter(File) At FileUtils.java:[line 321]
|
Dm
|
Found reliance on default encoding in edu.odu.cs.zeil.codegrader.TestCase.executeExternalTestCommand(Submission, Stage, String): new java.io.FileWriter(File) |
|
Bug type DM_DEFAULT_ENCODING (click for details)
In class edu.odu.cs.zeil.codegrader.TestCase In method edu.odu.cs.zeil.codegrader.TestCase.executeExternalTestCommand(Submission, Stage, String) Called method new java.io.FileWriter(File) At TestCase.java:[line 151]
|
Dm
|
Found reliance on default encoding in edu.odu.cs.zeil.codegrader.TestSuite.recordInGradeLog(Path, Submission, int): new java.io.FileWriter(File) |
|
Bug type DM_DEFAULT_ENCODING (click for details)
In class edu.odu.cs.zeil.codegrader.TestSuite In method edu.odu.cs.zeil.codegrader.TestSuite.recordInGradeLog(Path, Submission, int) Called method new java.io.FileWriter(File) At TestSuite.java:[line 516]
|
Dm
|
Found reliance on default encoding in edu.odu.cs.zeil.codegrader.TestSuite.recordInGradeLog(Path, Submission, int): new java.io.FileWriter(File, boolean) |
|
Bug type DM_DEFAULT_ENCODING (click for details)
In class edu.odu.cs.zeil.codegrader.TestSuite In method edu.odu.cs.zeil.codegrader.TestSuite.recordInGradeLog(Path, Submission, int) Called method new java.io.FileWriter(File, boolean) At TestSuite.java:[line 523]
|
Dm
|
Found reliance on default encoding in edu.odu.cs.zeil.codegrader.oracle.JUnit5Oracle.parseGradleReport(): new java.io.FileReader(File) |
|
Bug type DM_DEFAULT_ENCODING (click for details)
In class edu.odu.cs.zeil.codegrader.oracle.JUnit5Oracle In method edu.odu.cs.zeil.codegrader.oracle.JUnit5Oracle.parseGradleReport() Called method new java.io.FileReader(File) At JUnit5Oracle.java:[line 170]
|
Dm
|
Found reliance on default encoding in edu.odu.cs.zeil.codegrader.oracle.JUnit5Oracle.parseMavenReport(): new java.io.FileReader(File) |
|
Bug type DM_DEFAULT_ENCODING (click for details)
In class edu.odu.cs.zeil.codegrader.oracle.JUnit5Oracle In method edu.odu.cs.zeil.codegrader.oracle.JUnit5Oracle.parseMavenReport() Called method new java.io.FileReader(File) At JUnit5Oracle.java:[line 131]
|
EI
|
edu.odu.cs.zeil.codegrader.TestCase.getProperties() may expose internal representation by returning TestCase.properties |
|
Bug type EI_EXPOSE_REP (click for details)
In class edu.odu.cs.zeil.codegrader.TestCase In method edu.odu.cs.zeil.codegrader.TestCase.getProperties() Field edu.odu.cs.zeil.codegrader.TestCase.properties At TestCase.java:[line 481]
|
EI
|
edu.odu.cs.zeil.codegrader.TestCaseProperties.getAssignment() may expose internal representation by returning TestCaseProperties.assignment |
|
Bug type EI_EXPOSE_REP (click for details)
In class edu.odu.cs.zeil.codegrader.TestCaseProperties In method edu.odu.cs.zeil.codegrader.TestCaseProperties.getAssignment() Field edu.odu.cs.zeil.codegrader.TestCaseProperties.assignment At TestCaseProperties.java:[line 403]
|
EI
|
edu.odu.cs.zeil.codegrader.oracle.Oracle.getStage() may expose internal representation by returning Oracle.stage |
|
Bug type EI_EXPOSE_REP (click for details)
In class edu.odu.cs.zeil.codegrader.oracle.Oracle In method edu.odu.cs.zeil.codegrader.oracle.Oracle.getStage() Field edu.odu.cs.zeil.codegrader.oracle.Oracle.stage At Oracle.java:[line 237]
|
EI2
|
new edu.odu.cs.zeil.codegrader.DefaultBuildCase(TestSuiteProperties, Assignment) may expose internal representation by storing an externally mutable object into DefaultBuildCase.assignment |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.DefaultBuildCase In method new edu.odu.cs.zeil.codegrader.DefaultBuildCase(TestSuiteProperties, Assignment) Field edu.odu.cs.zeil.codegrader.DefaultBuildCase.assignment Local variable named asst At DefaultBuildCase.java:[line 18]
|
EI2
|
new edu.odu.cs.zeil.codegrader.DefaultBuildCase(TestSuiteProperties, Assignment) may expose internal representation by storing an externally mutable object into DefaultBuildCase.suite |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.DefaultBuildCase In method new edu.odu.cs.zeil.codegrader.DefaultBuildCase(TestSuiteProperties, Assignment) Field edu.odu.cs.zeil.codegrader.DefaultBuildCase.suite Local variable named properties At DefaultBuildCase.java:[line 19]
|
EI2
|
new edu.odu.cs.zeil.codegrader.Stage(Assignment, Submission, TestSuiteProperties) may expose internal representation by storing an externally mutable object into Stage.assignment |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.Stage In method new edu.odu.cs.zeil.codegrader.Stage(Assignment, Submission, TestSuiteProperties) Field edu.odu.cs.zeil.codegrader.Stage.assignment Local variable named asst At Stage.java:[line 51]
|
EI2
|
new edu.odu.cs.zeil.codegrader.Stage(Assignment, Submission, TestSuiteProperties) may expose internal representation by storing an externally mutable object into Stage.properties |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.Stage In method new edu.odu.cs.zeil.codegrader.Stage(Assignment, Submission, TestSuiteProperties) Field edu.odu.cs.zeil.codegrader.Stage.properties Local variable named suiteProperties At Stage.java:[line 52]
|
EI2
|
new edu.odu.cs.zeil.codegrader.Stage(Assignment, TestSuiteProperties) may expose internal representation by storing an externally mutable object into Stage.assignment |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.Stage In method new edu.odu.cs.zeil.codegrader.Stage(Assignment, TestSuiteProperties) Field edu.odu.cs.zeil.codegrader.Stage.assignment Local variable named asst At Stage.java:[line 66]
|
EI2
|
new edu.odu.cs.zeil.codegrader.Stage(Assignment, TestSuiteProperties) may expose internal representation by storing an externally mutable object into Stage.properties |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.Stage In method new edu.odu.cs.zeil.codegrader.Stage(Assignment, TestSuiteProperties) Field edu.odu.cs.zeil.codegrader.Stage.properties Local variable named suiteProperties At Stage.java:[line 67]
|
EI2
|
new edu.odu.cs.zeil.codegrader.Submission(Assignment, String, Path) may expose internal representation by storing an externally mutable object into Submission.assignment |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.Submission In method new edu.odu.cs.zeil.codegrader.Submission(Assignment, String, Path) Field edu.odu.cs.zeil.codegrader.Submission.assignment Local variable named theAssignment At Submission.java:[line 38]
|
EI2
|
new edu.odu.cs.zeil.codegrader.SubmissionSet(Assignment) may expose internal representation by storing an externally mutable object into SubmissionSet.assignment |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.SubmissionSet In method new edu.odu.cs.zeil.codegrader.SubmissionSet(Assignment) Field edu.odu.cs.zeil.codegrader.SubmissionSet.assignment Local variable named theAssignment At SubmissionSet.java:[line 29]
|
EI2
|
new edu.odu.cs.zeil.codegrader.TestCase(TestCaseProperties) may expose internal representation by storing an externally mutable object into TestCase.properties |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.TestCase In method new edu.odu.cs.zeil.codegrader.TestCase(TestCaseProperties) Field edu.odu.cs.zeil.codegrader.TestCase.properties Local variable named testProperties At TestCase.java:[line 74]
|
EI2
|
new edu.odu.cs.zeil.codegrader.TestCaseProperties(Assignment, String) may expose internal representation by storing an externally mutable object into TestCaseProperties.assignment |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.TestCaseProperties In method new edu.odu.cs.zeil.codegrader.TestCaseProperties(Assignment, String) Field edu.odu.cs.zeil.codegrader.TestCaseProperties.assignment Local variable named asst At TestCaseProperties.java:[line 145]
|
EI2
|
new edu.odu.cs.zeil.codegrader.TestSuite(Assignment) may expose internal representation by storing an externally mutable object into TestSuite.assignment |
|
Bug type EI_EXPOSE_REP2 (click for details)
In class edu.odu.cs.zeil.codegrader.TestSuite In method new edu.odu.cs.zeil.codegrader.TestSuite(Assignment) Field edu.odu.cs.zeil.codegrader.TestSuite.assignment Local variable named asst At TestSuite.java:[line 71]
|
DLS
|
Dead store to paramString in edu.odu.cs.zeil.codegrader.TestCase.executeInternalTestCommand(Submission, Stage, String) |
|
Bug type DLS_DEAD_LOCAL_STORE (click for details)
In class edu.odu.cs.zeil.codegrader.TestCase In method edu.odu.cs.zeil.codegrader.TestCase.executeInternalTestCommand(Submission, Stage, String) Local variable named paramString At TestCase.java:[line 119]
|
DLS
|
Dead store to caseProperties in new edu.odu.cs.zeil.codegrader.TestCaseProperties(Assignment, String) |
|
Bug type DLS_DEAD_LOCAL_STORE (click for details)
In class edu.odu.cs.zeil.codegrader.TestCaseProperties In method new edu.odu.cs.zeil.codegrader.TestCaseProperties(Assignment, String) Local variable named caseProperties At TestCaseProperties.java:[line 157]
|
NP
|
Possible null pointer dereference in edu.odu.cs.zeil.codegrader.oracle.JUnit5Oracle.parseMavenReport() due to return value of called method |
|
Bug type NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE (click for details)
In class edu.odu.cs.zeil.codegrader.oracle.JUnit5Oracle In method edu.odu.cs.zeil.codegrader.oracle.JUnit5Oracle.parseMavenReport() Value loaded from ? Dereferenced at JUnit5Oracle.java:[line 129] Known null at JUnit5Oracle.java:[line 129]
|
UrF
|
Unread public/protected field: edu.odu.cs.zeil.codegrader.BuildProperties.timeLimit |
|
Bug type URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD (click for details)
In class edu.odu.cs.zeil.codegrader.BuildProperties Field edu.odu.cs.zeil.codegrader.BuildProperties.timeLimit At BuildProperties.java:[line 49]
|
This instruction assigns a value to a local variable,
but the value is not read or used in any subsequent instruction.
Often, this indicates an error, because the value computed is never
used.
Note that Sun's javac compiler often generates dead stores for
final local variables. Because SpotBugs is a bytecode-based tool,
there is no easy way to eliminate these false positives.
Found a call to a method which will perform a byte to String (or String to byte) conversion,
and will assume that the default platform encoding is suitable. This will cause the application
behavior to vary between platforms. Use an alternative API and specify a charset name or Charset
object explicitly.
Returning a reference to a mutable object value stored in one of the object's fields
exposes the internal representation of the object.
If instances
are accessed by untrusted code, and unchecked changes to
the mutable object would compromise security or other
important properties, you will need to do something different.
Returning a new copy of the object is better approach in many situations.
This code stores a reference to an externally mutable object into the
internal representation of the object.
If instances
are accessed by untrusted code, and unchecked changes to
the mutable object would compromise security or other
important properties, you will need to do something different.
Storing a copy of the object is better approach in many situations.
OpenJDK introduces a potential incompatibility.
In particular, the java.util.logging.Logger behavior has
changed. Instead of using strong references, it now uses weak references
internally. That's a reasonable change, but unfortunately some code relies on
the old behavior - when changing logger configuration, it simply drops the
logger reference. That means that the garbage collector is free to reclaim
that memory, which means that the logger configuration is lost. For example,
consider:
public static void initLogging() throws Exception {
Logger logger = Logger.getLogger("edu.umd.cs");
logger.addHandler(new FileHandler()); // call to change logger configuration
logger.setUseParentHandlers(false); // another call to change logger configuration
}
The logger reference is lost at the end of the method (it doesn't
escape the method), so if you have a garbage collection cycle just
after the call to initLogging, the logger configuration is lost
(because Logger only keeps weak references).
public static void main(String[] args) throws Exception {
initLogging(); // adds a file handler to the logger
System.gc(); // logger configuration lost
Logger.getLogger("edu.umd.cs").info("Some message"); // this isn't logged to the file as expected
}
Ulf Ochsenfahrt and Eric Fellheimer
The return value from a method is dereferenced without a null check,
and the return value of that method is one that should generally be checked
for null. This may lead to a NullPointerException
when the code is executed.
This method returns a value that is not checked. The return value should be checked
since it can indicate an unusual or unexpected function execution. For
example, the File.delete()
method returns false
if the file could not be successfully deleted (rather than
throwing an Exception).
If you don't check the result, you won't notice if the method invocation
signals unexpected behavior by returning an atypical return value.
This class is an inner class, but does not use its embedded reference
to the object which created it. This reference makes the instances
of the class larger, and may keep the reference to the creator object
alive longer than necessary. If possible, the class should be
made static.
This field is never read.
The field is public or protected, so perhaps
it is intended to be used with classes not seen as part of the analysis. If not,
consider removing it from the class.