Skip to content

Commit fbb7745

Browse files
Add Calendar.getInstance to the list of methods to raise issues on
1 parent 2650b75 commit fbb7745

2 files changed

Lines changed: 18 additions & 2 deletions

File tree

java-checks-test-sources/default/src/test/java/checks/tests/SystemClockCheckSample.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@
66
import java.time.ZoneId;
77
import java.time.ZoneOffset;
88
import java.time.temporal.ChronoUnit;
9+
import java.util.Calendar;
910
import java.util.Date;
11+
import java.util.Locale;
12+
import java.util.TimeZone;
1013
import org.junit.jupiter.api.Test;
1114
import org.mockito.Mock;
1215

13-
import static org.junit.Assert.assertEquals;
16+
import static org.junit.jupiter.api.Assertions.assertEquals;
1417
import static org.junit.jupiter.api.Assertions.assertTrue;
1518
import static org.mockito.Mockito.when;
1619

@@ -66,11 +69,19 @@ void testSystemMethods() {
6669
}
6770

6871
@Test
69-
void testDate() {
72+
void testDateAndCalendar() {
7073
Date date = new Date(); // Noncompliant {{Do not use the system clock in tests.}}
7174
// ^^^^^^^^^^
7275
Date date2 = new Date(100000); // Compliant
7376
assertEquals(date, date2);
77+
Calendar calendar = Calendar.getInstance(); // Noncompliant {{Do not use the system clock in tests.}}
78+
// ^^^^^^^^^^^^^^^^^^^^^^
79+
Calendar calendar2 = Calendar.getInstance(TimeZone.getDefault()); // Noncompliant {{Do not use the system clock in tests.}}
80+
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
81+
Calendar calendar3 = Calendar.getInstance(Locale.getDefault()); // Noncompliant {{Do not use the system clock in tests.}}
82+
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
83+
assertEquals(calendar.getTime(), calendar2.getTime());
84+
assertEquals(calendar2.getTime(), calendar3.getTime());
7485
}
7586

7687
@Test

java-checks/src/main/java/org/sonar/java/checks/tests/SystemClockCheck.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ public class SystemClockCheck extends AbstractMethodDetection {
5353
.names("currentTimeMillis")
5454
.addWithoutParametersMatcher()
5555
.build(),
56+
MethodMatchers.create()
57+
.ofTypes("java.util.Calendar")
58+
.names("getInstance")
59+
.withAnyParameters()
60+
.build(),
5661
MethodMatchers.create()
5762
.ofTypes("java.util.Date")
5863
.constructor()

0 commit comments

Comments
 (0)