When the call to a function doesn't have any side effects, what is the point of making the call if the results are ignored? In such case, either the function call is useless and should be dropped or the source code doesn't behave as expected.
To prevent generating any false-positives, this rule triggers an issue only on the following predefined list of immutable classes in the Java API :
java.lang.String
java.lang.Boolean
java.lang.Integer
java.lang.Double
java.lang.Float
java.lang.Byte
java.lang.Character
java.lang.Short
java.lang.StackTraceElement
java.time.DayOfWeek
java.time.Duration
java.time.Instant
java.time.LocalDate
java.time.LocalDateTime
java.time.LocalTime
java.time.Month
java.time.MonthDay
java.time.OffsetDateTime
java.time.OffsetTime
java.time.Period
java.time.Year
java.time.YearMonth
java.time.ZonedDateTime
java.math.BigInteger
java.math.BigDecimal
java.util.Optional
public void handle(String command){ command.toLowerCase(); // Noncompliant; result of method thrown away ... }
public void handle(String command){ String formattedCommand = command.toLowerCase(); ... }
This rule will not raise an issue when both these conditions are met:
try
block with an associated catch
clause. String.getBytes(Charset)
. private boolean textIsInteger(String textToCheck) { try { Integer.parseInt(textToCheck, 10); // OK return true; } catch (NumberFormatException ignored) { return false; } }