View Javadoc
1   /*
2   RequireThis
3   checkFields = (default)true
4   checkMethods = (default)true
5   validateOnlyOverlapping = false
6   
7   
8   */
9   
10  package com.puppycrawl.tools.checkstyle.checks.coding.requirethis;
11  
12  import java.io.*;
13  import java.util.Scanner;
14  
15  public class InputRequireThisTryWithResourcesOnlyOverlappingFalse implements AutoCloseable {
16      private BufferedReader fldBufferedReader;
17      private InputStreamReader fldStreamReader;
18      private Scanner fldScanner;
19      private String fldCharset = "utf-8";
20  
21      void oneResource() {
22          try (BufferedReader fldBufferedReader
23                       = new BufferedReader(new InputStreamReader(null, "utf-8"))) { }
24          catch (IOException e) { }
25      }
26  
27      void twoResourcesReferencingEachOther() {
28          try (InputStreamReader fldStreamReader = new InputStreamReader(null, "utf-8");
29               BufferedReader fldBufferedReader = new BufferedReader(fldStreamReader)) { }
30          catch (IOException e) { }
31      }
32  
33      void threeResourcesReferencingEachOther() {
34          try (InputStreamReader fldStreamReader = new InputStreamReader(null, "utf-8");
35               BufferedReader fldBufferedReader = new BufferedReader(fldStreamReader);
36               Scanner fldScanner
37                       = new Scanner(fldStreamReader.toString()
38                       + fldBufferedReader.toString())) { }
39          catch (IOException e) { }
40      }
41  
42      void failToHandleParameter() {
43          try (BufferedReader fldBufferedReader = new BufferedReader(new InputStreamReader(
44                  null, fldCharset))) { } // violation '.*variable 'fldCharset'.*'
45          catch (IOException e) { }
46      }
47  
48      void handleParameter() {
49          try (BufferedReader fldBufferedReader = new BufferedReader(
50                  new InputStreamReader(null, this.fldCharset))) { }
51          catch (IOException e) { }
52      }
53  
54      void noResources() {
55          try {
56              int a = 5;
57              fldCharset += a; // violation '.*variable 'fldCharset'.*'
58          }
59          catch (Exception ex) { }
60      }
61  
62      String methodToInvoke() {
63          return "string";
64      }
65  
66      void methodInvoke() {
67          try (BufferedReader fldBufferedReader = new BufferedReader(
68                  // violation below 'Method .* 'methodToInvoke' needs "this."'
69                  new InputStreamReader(null, methodToInvoke()))) { }
70          catch (Exception ex) { }
71      }
72  
73      void methodIdentCopy() {
74          try (BufferedReader methodToInvoke = new BufferedReader(
75                  new InputStreamReader(null, this.methodToInvoke()))) {
76              // violation below 'Method .* 'methodToInvoke' needs "this."'
77              String a = methodToInvoke() + methodToInvoke.toString();
78          }
79          catch (Exception ex) { }
80      }
81  
82      final static InputRequireThisTryWithResources r1 = new InputRequireThisTryWithResources();
83      final InputRequireThisTryWithResources r2 = new InputRequireThisTryWithResources();
84      static InputRequireThisTryWithResources r3 = new InputRequireThisTryWithResources();
85      InputRequireThisTryWithResources r4 = new InputRequireThisTryWithResources();
86  
87      void staticVariables() {
88          try (r1) { }
89          catch (Exception e) { }
90          try (r1.r2) { }
91          catch (Exception e) { }
92          try (r1.r2.r4.r2.r4.r2) { }
93          catch (Exception e) { }
94      }
95  
96      void nestedTryWithResources() {
97          try (InputStreamReader fldStreamReader = new InputStreamReader(null, "utf-8")) {
98              try (BufferedReader fldBufferedReader = new BufferedReader(fldStreamReader)) {
99                  try (Scanner fldScanner = new Scanner(
100                         fldBufferedReader.toString() + fldStreamReader.toString())) { }
101             }
102             // violation below '.*variable 'fldBufferedReader' needs "this."'
103             try (Scanner fldScanner = new Scanner(fldBufferedReader.toString()
104                     + fldStreamReader.toString())) { }
105 
106             String a = fldStreamReader.toString()
107                     + fldBufferedReader.toString() + fldScanner.toString(); // 2 violations
108         }
109         catch (IOException e) {
110             String a = fldStreamReader.toString() // violation '.*variable 'fldStreamReader'.*'
111                     + fldBufferedReader.toString() + fldScanner.toString(); // 2 violations
112         }
113     }
114 
115     @Override
116     public void close() throws Exception { }
117 }