rspec/rules/S5764/java/rule.adoc

73 lines
1.9 KiB
Plaintext
Raw Normal View History

2021-04-28 16:49:39 +02:00
The class ``++java.util.zip.GZIPInputStream++`` is already buffering its input while reading. Thus passing a ``++java.io.BufferedInputStream++`` to a ``++java.util.zip.GZIPInputStream++`` is redundant. It is more efficient to directly pass the original input stream to ``++java.util.zip.GZIPInputStream++``.
Note that the default buffer size of ``++GZIPInputStream++`` is not the same as the one in ``++BufferedInputStream++``. Configure it if need be.
This rule raises an issue when a ``++java.util.zip.GZIPInputStream++`` reads from a ``++java.io.BufferedInputStream++``.
2021-04-28 16:49:39 +02:00
== Noncompliant Code Example
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
import java.io.*;
import java.util.zip.GZIPInputStream;
public class Noncompliant {
void deflateFile(final File file) throws IOException {
try (
FileInputStream fileStream = new FileInputStream(file);
BufferedInputStream bufferedStream = new BufferedInputStream(fileStream);
InputStream input = new GZIPInputStream(bufferedStream); // Noncompliant
) {
// process the input
}
}
}
----
2021-04-28 16:49:39 +02:00
== Compliant Solution
2022-02-04 17:28:24 +01:00
[source,java]
2021-04-28 16:49:39 +02:00
----
import java.io.*;
import java.util.zip.GZIPInputStream;
public class Compliant {
void deflateFile(final File file) throws IOException {
try (
FileInputStream fileStream = new FileInputStream(file);
InputStream input = new GZIPInputStream(fileStream);
) {
// process the input
}
}
}
----
2021-04-28 16:49:39 +02:00
== See
* Java Performance Tuning Guide - http://java-performance.info/java-io-bufferedinputstream-and-java-util-zip-gzipinputstream/[java.io.BufferedInputStream and java.util.zip.GZIPInputStream]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
include::message.adoc[]
include::highlighting.adoc[]
'''
== Comments And Links
(visible only on this page)
include::comments-and-links.adoc[]
endif::env-github,rspecator-view[]