From 83e205a009e96e24eeb543eb820d6f4ebe5e4697 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 4 Sep 2014 20:20:20 +0200 Subject: [PATCH] IDEA-129437 (PreparedStatement.setQueryTimeout(0) incorrectly triggers warning on use of index 0) --- .../ig/bugs/ResultSetIndexZeroInspection.java | 8 ++--- .../bugs/ResultSetIndexZeroInspection.java | 14 -------- .../ResultSetIndexZero.java | 21 ++++++++++++ .../ResultSetIndexZeroInspectionTest.java | 34 +++++++++++++++++++ 4 files changed, 59 insertions(+), 18 deletions(-) delete mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/ResultSetIndexZeroInspection.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/result_set_index_zero/ResultSetIndexZero.java create mode 100644 plugins/InspectionGadgets/testsrc/com/siyeh/ig/bugs/ResultSetIndexZeroInspectionTest.java diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/ResultSetIndexZeroInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/ResultSetIndexZeroInspection.java index 626d4508e731..a72f297e483c 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/ResultSetIndexZeroInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/ResultSetIndexZeroInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2012 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2014 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -87,11 +87,11 @@ public class ResultSetIndexZeroInspection extends BaseInspection { final PsiExpression qualifier = methodExpression.getQualifierExpression(); if (resultSet) { if (TypeUtils.expressionHasTypeOrSubtype(qualifier, "java.sql.ResultSet")) { - registerError(argument, Boolean.valueOf(resultSet)); + registerError(argument, Boolean.TRUE); } - } else { + } else if (arguments.length > 1) { if (TypeUtils.expressionHasTypeOrSubtype(qualifier, "java.sql.PreparedStatement")) { - registerError(argument, Boolean.valueOf(resultSet)); + registerError(argument, Boolean.FALSE); } } } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/ResultSetIndexZeroInspection.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/ResultSetIndexZeroInspection.java deleted file mode 100644 index cbb5e0eaf8a8..000000000000 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/ResultSetIndexZeroInspection.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.siyeh.igtest.bugs; - -import java.sql.ResultSet; -import java.sql.SQLException; - -public class ResultSetIndexZeroInspection { - private static final int COLUMN_INDEX = 0; - - public void foo(ResultSet resultSet) throws SQLException { - resultSet.getInt(0); - resultSet.getInt(COLUMN_INDEX); - resultSet.getInt(3); - } -} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/result_set_index_zero/ResultSetIndexZero.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/result_set_index_zero/ResultSetIndexZero.java new file mode 100644 index 000000000000..de087faef79e --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/result_set_index_zero/ResultSetIndexZero.java @@ -0,0 +1,21 @@ +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +public class ResultSetIndexZero { + private static final int COLUMN_INDEX = 0; + + public void foo(ResultSet resultSet) throws SQLException { + resultSet.getInt(0); + resultSet.getInt(COLUMN_INDEX); + resultSet.getInt(3); + } + + void foo(PreparedStatement ps) throws SQLException { + ps.setQueryTimeout(0); + ps.setFetchDirection(0); + ps.setFetchSize(0); + ps.setMaxFieldSize(0); + ps.setMaxRows(0); + } +} diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/bugs/ResultSetIndexZeroInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/bugs/ResultSetIndexZeroInspectionTest.java new file mode 100644 index 000000000000..07a1c7d7150e --- /dev/null +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/bugs/ResultSetIndexZeroInspectionTest.java @@ -0,0 +1,34 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.siyeh.ig.bugs; + +import com.intellij.codeInspection.InspectionProfileEntry; +import com.siyeh.ig.LightInspectionTestCase; +import org.jetbrains.annotations.Nullable; + +/** + * @author Bas Leijdekkers + */ +public class ResultSetIndexZeroInspectionTest extends LightInspectionTestCase { + + public void testResultSetIndexZero() { doTest(); } + + @Nullable + @Override + protected InspectionProfileEntry getInspection() { + return new ResultSetIndexZeroInspection(); + } +}