You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Antonio Gomes Rodrigues <ra...@gmail.com> on 2017/09/11 20:06:13 UTC

Another analyze with errorprone

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

Re: Another analyze with errorprone

Posted by Philippe Mouawad <ph...@gmail.com>.
Hi Antonio,
My answers below.
Regards

On Mon, Sep 11, 2017 at 10:06 PM, Antonio Gomes Rodrigues <ra...@gmail.com>
wrote:

> 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?
>
> Those need further analysis and we need to make use of default charset
explicit.

>
> 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?
>
No it's a bug AFAIU. Fixed.

>
>
> 3.
> Like before, I don't have the time to study it yet
>
>     [javac]
> /home/ra77/Utils/ErrorProne/trunk/src/protocol/http/org/apac
> he/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) {'?
>
False positive IMO.
This method is overriden for logging only.
The call to super is synchronized, I don't think there is an issue



>     [javac]
> /home/ra77/Utils/ErrorProne/trunk/src/protocol/http/org/apac
> he/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?
>
> Yes as per comment

>
> Antonio
>



-- 
Cordialement.
Philippe Mouawad.