rspec/rules/S2233/java/rule.adoc

53 lines
1.3 KiB
Plaintext
Raw Permalink Normal View History

== Why is this an issue?
The implementation of certain ``++ResultSet++`` methods is optional for result sets of type ``++TYPE_FORWARD_ONLY++``. Even if your current JDBC driver does implement those methods, there's no guarantee you won't change drivers in the future.
2021-04-28 16:49:39 +02:00
This rule looks for invocations of the following methods on ``++TYPE_FORWARD_ONLY++`` ``++ResultSet++``s:
* ``++isBeforeFirst++``
* ``++isAfterLast++``
* ``++isFirst++``
* ``++getRow++``
=== Noncompliant code example
2021-04-28 16:49:39 +02:00
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY);
stmt.executeQuery("SELECT name, address FROM PERSON");
ResultSet rs = stmt.getResultSet();
if (rs.isBeforeFirst()) { // Noncompliant
}
----
== Resources
=== Related rules
2021-04-28 16:49:39 +02:00
* S2232 - "ResultSet.isLast()" should not be used
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
Remove this call to "xxx".
'''
== Comments And Links
(visible only on this page)
=== on 5 Dec 2014, 07:51:51 Nicolas Peru wrote:
This one will require CFG to limit the number of false positive to add some constraints on the "stmt" variable to be able to determine which statement are indeed created with ``++ResultSet.TYPE_FORWARD_ONLY++``
endif::env-github,rspecator-view[]