| package com.siyeh.ig.threading; |
| |
| import com.intellij.codeInspection.LocalInspectionTool; |
| import com.siyeh.ig.LightInspectionTestCase; |
| |
| /** |
| * @author Bas Leijdekkers |
| */ |
| public class AccessToNonThreadSafeStaticFieldFromInstanceInspectionTest extends LightInspectionTestCase { |
| |
| @Override |
| protected String[] getEnvironmentClasses() { |
| return new String[]{ |
| "package java.text;" + |
| "import java.util.Date;" + |
| "public abstract class DateFormat {" + |
| " public String format(Date d) {}" + |
| "}", |
| "package java.text;" + |
| "public class SimpleDateFormat extends DateFormat {" + |
| " public SimpleDateFormat(String s) {}" + |
| "}" |
| }; |
| } |
| |
| public void testSimple() { |
| doTest("import java.util.Date;" + |
| "import java.text.DateFormat;" + |
| "import java.text.SimpleDateFormat;" + |
| "class C {" + |
| " private static final SimpleDateFormat df = new SimpleDateFormat(\"yyyy-MM-dd\");" + |
| " private String s = /*Access to non thread-safe static field 'df' of type 'java.text.SimpleDateFormat'*/df/**/.format(new Date());" + |
| "}"); |
| } |
| |
| public void testDeepCheck() { |
| doTest("import java.util.Date;" + |
| "import java.text.DateFormat;" + |
| "import java.text.SimpleDateFormat;" + |
| "class C {" + |
| " private static final DateFormat df = new SimpleDateFormat(\"yyyy-MM-dd\");" + |
| " private static final Date d = new Date();" + |
| " private static final String s1 = df.format(d);" + |
| " String m() {" + |
| " return /*Access to non thread-safe static field 'df' of type 'java.text.SimpleDateFormat'*/df/**/.format(d);" + |
| " }" + |
| "}"); |
| } |
| |
| @Override |
| protected LocalInspectionTool getInspection() { |
| return new AccessToNonThreadSafeStaticFieldFromInstanceInspection(); |
| } |
| } |