Hi,
i have analyse jmeter source with error prone (http://errorprone.info/) and
I have some questions
1.
It detect a lot of "[DefaultCharset] Implicit use of the platform default
charset, which can result in e.g. non-ASCII characters being silently
replaced with '?' in many environments"
e.g.
[javac]
/home/ra77/Utils/ErrorProne/trunk/src/functions/org/apache/jmeter/functions/FileRowColContainer.java:75:
warning: [DefaultCharset] Implicit use of the platform default charset,
which can result in e.g. non-ASCII characters being silently replaced with
'?' in many environments
[javac] try ( FileReader fis = new FileReader(fileName);
[javac] ^
[javac] (see http://errorprone.info/bugpattern/DefaultCharset)
[javac] Did you mean 'try ( Reader fis =
Files.newBufferedReader(Paths.get(fileName), UTF_8);' or 'try ( Reader fis
= Files.newBufferedReader(Paths.get(fileName), Charset.defaultCharset());'?
[javac]
/home/ra77/Utils/ErrorProne/trunk/src/functions/org/apache/jmeter/functions/Groovy.java:158:
warning: [DefaultCharset] Implicit use of the platform default charset,
which can result in e.g. non-ASCII characters being silently replaced with
'?' in many environments
[javac] try (FileReader fr = new FileReader(file);
BufferedReader reader = new BufferedReader(fr)) {
[javac] ^
[javac] (see http://errorprone.info/bugpattern/DefaultCharset)
[javac] Did you mean 'try (Reader fr =
Files.newBufferedReader(file.toPath(), UTF_8); BufferedReader reader = new
BufferedReader(fr)) {' or 'try (Reader fr =
Files.newBufferedReader(file.toPath(), Charset.defaultCharset());
BufferedReader reader = new BufferedReader(fr)) {'?
I don't have checked the source code yet but I would like to know if it is
wanted or if it is a bug?
2.
Like before, I don't have the time to study it yet but in
TransactionSampler.java we cast a long to an it
[javac]
/home/ra77/Utils/ErrorProne/trunk/src/core/org/apache/jmeter/control/TransactionSampler.java:121:
warning: [NarrowingCompoundAssignment] Compound assignments from long to
int hide lossy casts
[javac] totalTime += res.getTime();
[javac] ^
[javac] (see
http://errorprone.info/bugpattern/NarrowingCompoundAssignment)
[javac] Did you mean 'totalTime = (int) (totalTime + res.getTime());'?
Is it wanted?
3.
Like before, I don't have the time to study it yet
[javac]
/home/ra77/Utils/ErrorProne/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/hc/HttpPoolEntry.java:52:
warning: [UnsynchronizedOverridesSynchronized] Unsynchronized method
isExpired overrides synchronized method in PoolEntry
[javac] public boolean isExpired(final long now) {
[javac] ^
[javac] (see
http://errorprone.info/bugpattern/UnsynchronizedOverridesSynchronized)
[javac] Did you mean 'public synchronized boolean isExpired(final
long now) {'?
[javac]
/home/ra77/Utils/ErrorProne/trunk/src/protocol/http/org/apache/jmeter/protocol/http/util/DirectAccessByteArrayOutputStream.java:36:
warning: [UnsynchronizedOverridesSynchronized] Unsynchronized method
toByteArray overrides synchronized method in ByteArrayOutputStream
[javac] public byte[] toByteArray() {
[javac] ^
[javac] (see
http://errorprone.info/bugpattern/UnsynchronizedOverridesSynchronized)
Is it wanted?
Antonio