summaryrefslogtreecommitdiff
path: root/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/mismatched_array_read_write/MismatchedArrayReadWrite.java
blob: 33683aaa4d1fa02ca6264f70512b66238737dbeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
package com.siyeh.igtest.bugs.mismatched_array_read_write;

public class MismatchedArrayReadWrite {
    private int[] foo = new int[3];
    private int[] bar;

    public void bar()
    {
        foo[2] = bar[2];
    }

    public void bar2()
    {
        final int[] barzoom = new int[3];
        barzoom[2] = 3;
    }

    public void bar3()
    {
        final int[] barzoom = new int[3];
        int baz = barzoom[2];
    }

    public int[] bar4()
    {
        final int[] barzoom = new int[3];
        return barzoom;
    }

    public int bar5()
    {
        final int[] barzoom = new int[3];
        return barzoom[3];
    }

    public void bar6()
    {
        final int[] barzoom = new int[3];
        System.out.println(barzoom[3]);
    }

    public void bar7()
    {
        final int[] barzoom = new int[3];
        System.out.println(barzoom);
    }

    public void bar8() {
        int[][] array = new int[10][10];
        for (int i = 9; i >= 0; i--) {
            for (int j = 9; j >= 0; j--) {
                array[i][j] = 20;
            }
        }
        System.out.println(array[0][0]);
    }

    public void bar9() {
        final int[][] allResults = new int[10][10];
        for (int row = 0; row < allResults.length; row++) {
            final int[] rowData = allResults[row];
            for (int col = 0; col < 10; col++) {
                rowData[col] = 100 * 7;

            }
        }
    }
}
class Test{
    public void bar(){
        int[] a = new int[5];
        for(int i = 0; i < a.length; i++){
            a[i] = i;
        }
        final java.lang.Object[] o = new java.lang.Object[]{a};
        foo(o);
    }

    public void foo(java.lang.Object[] o){

    }

    private void testStuff() {
        int[][] array = new int[2][2];
        array[0][1]++;
        System.out.println(array[0][1]);
    }

    void foo1() {
        final int[] barzoom = {};
        barzoom[2] = 3;
    }

    void foo2() {
        final int[] barzoom = new int[]{};
        barzoom[2] = 3;
    }

    void foo3(Object[] otherArr) {
        Object[] arr = otherArr.clone();
        for (int i = 0; i < 10; i++) arr[i] = i;
    }

    void foo4() {
        int[] array = {1, 2, 4};
        assert array.length == 3;
    }

  private String[] getAttrInfos() {
    return null;
  }
  private String mon() {
    String[] attributeInfo = getAttrInfos();
    if (attributeInfo != null) {
      System.out.println("");
    }
    return null;
  }
}
class Bug {
  // Example 1
  public void test1() {
    final java.util.List<long[]> results = new java.util.ArrayList<>();
    for (int i = 0; i < 10; i++) {
      results.add(new long[3]);
    }

    for (int i = 0; i < results.size(); i++) {
      final long[] longs = results.get(i); // <-- Contents of array 'longs' are written to, but never read
      for (int j = 0; j < 3; j++) {
        longs[j] = i * j;
      }
    }

    for (long[] result : results) {
      for (long l : result) {
        System.out.println(l);
      }
    }
  }

  // Example 2
  private int[] _ints = {0};

  public void print() {
    for (int i : _ints) {
      System.out.println(i);
    }
  }

  public void test2() {
    final Bug bug = new Bug();
    final int[] ints = bug._ints; // <-- Contents of array 'ints' are written to, but never read
    ints[0] = 1;
    bug.print();
  }
}
class Toster
{
  private static final int MAX = 1;

  public static void main(String[] args)
  {
    new Toster().run();
  }

  private int[][] values = new int[][] { {new java.util.Random().nextInt()}, {new java.util.Random().nextInt()} };

  private void run()
  {
    for (int j = new java.util.Random().nextInt(values.length); j < new java.util.Random().nextInt(values.length); j++)
    {
      int[] array = values[j]; //IDEA says here: contents of array 'array' are written to, but never used

      for (int i = 0; i < MAX; i++)
      {
        array[i] = new java.util.Random().nextInt();
      }
    }
  }
}
class Ferrari458Spider implements java.io.Serializable {
  private static final java.io.ObjectStreamField[] serialPersistentFields = {
    new java.io.ObjectStreamField("b", String.class)
  };
}

class TestIDEA128098 {
  private static final String[] CONSTANT_ARRAY = new String[]{""}; // warning is on this constant


  enum SomeEnum {
    ITEM( CONSTANT_ARRAY);
    private final String[] myPatterns;
    SomeEnum(String... patterns) {
      myPatterns = patterns;
    }
  }
}