Hi,

Generally speaking I would be in favour of adding some reasonable static code 
analysis, however this requires a lot of effort and can not be done at once. 
Also if such checks are firing incorrectly too often it would be annoying to 
manually suppress such warnings/errors.

> I don't really see a benefit in enabling it /continuously/.

On the other hand, I do not see a point of not running it as a part of travis 
CI and non-fast mvn build (`mvn clean install -DskipTests` should perform such 
static checks). If such rules are not enforced by a tool, then there is really 
no point in talking about them - they will be very quickly ignored and 
abandoned.

Piotrek

> On 13 Jun 2018, at 10:38, Chesnay Schepler <ches...@apache.org> wrote:
> 
> I don't really see a benefit in enabling it /continuously/.
> This wouldn't be part of the build or CI processes, as we can't fail the 
> builds since it happens too often that issues are improperly categorized.
> 
> Wading through these lists is time-consuming and I very much doubt that we 
> will do that with a high or even regular frequency.
> We would always require 1-2 committers to commit to this process.
> Thus there's no benefit in running sonarcube beyond these irregular checks as 
> we'd just be wasting processing time.
> 
> I suggest to keep it as a manual process.
> 
> On 13.06.2018 09:35, Till Rohrmann wrote:
>> Hi Alex,
>> 
>> thanks for bringing this topic up. So far the Flink project does not use a
>> static code analysis tool but I think it can strongly benefit from it
>> (simply by looking at the reported bugs). There was a previous discussion
>> about enabling the ASF Sonarcube integration for Flink [1] but it was never
>> put into reality. There is also an integration for Travis which might be
>> interesting to look into [2]. I would be in favour of enabling this.
>> 
>> [1]
>> http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Add-Sonarqube-analysis-td14556.html
>> [2] https://docs.travis-ci.com/user/sonarcloud/
>> 
>> Cheers,
>> Till
>> 
>> On Tue, Jun 12, 2018 at 11:12 PM Ted Yu <yuzhih...@gmail.com> wrote:
>> 
>>> I took a look at some of the blocker defects.
>>> e.g.
>>> 
>>> https://sonarcloud.io/project/issues?id=org.apache.flink%3Aflink-parent&open=AWPxETxA3e-qcckj1Sl1&resolved=false&severities=BLOCKER&types=BUG
>>> 
>>> For
>>> ./flink-state-backends/flink-statebackend-rocksdb/src/main/java/org/apache/flink/contrib/streaming/state/PredefinedOptions.java
>>> , the closing of DBOptions using try-with-resources is categorized as
>>> blocker by the analysis.
>>> 
>>> I don't think that categorization is proper.
>>> 
>>> We can locate the high priority defects, according to consensus, and fix
>>> those.
>>> 
>>> Cheers
>>> 
>>> On Tue, Jun 12, 2018 at 2:01 PM, <simeon.arkhi...@gmail.com> wrote:
>>> 
>>>> Hello Flink community.
>>>> 
>>>> I am new in Flink project and probably don't understand it a lot. Could
>>>> you please clarify one question to me?
>>>> 
>>>> I download Flink sources and build it from scratch. I found checkstyle
>>>> guidelines that every Flink developer should follow which is very useful.
>>>> However, I didn't find anything about static analysis tools like
>>> Sonarcube.
>>>> I have looked through mailing lists archive but without success. That
>>>> seemed very strange to me.
>>>> 
>>>> I have setup Sonarcube and run analysis on whole Flink project. After a
>>>> while I have got 442 bugs, 511 vulnerabilities and more than 13K Code
>>>> Smells issues. You can see them all here: https://sonarcloud.io/
>>>> dashboard?id=org.apache.flink%3Aflink-parent
>>>> 
>>>> I looked through some of bugs and vulnerabilities and there are many
>>>> important ones (in my opinions) like these:
>>>> - 'other' is dereferenced. A "NullPointerException" could be thrown;
>>>> "other" is nullable here.
>>>> - Either re-interrupt this method or rethrow the "InterruptedException".
>>>> - Move this call to "wait()" into a synchronized block to be sure the
>>>> monitor on "Object" is held.
>>>> - Refactor this code so that the Iterator supports multiple traversal
>>>> - Use try-with-resources or close this "JsonGenerator" in a "finally"
>>>> clause. Use try-with-resources or close this "JsonGenerator" in a
>>> "finally"
>>>> clause.
>>>> - Cast one of the operands of this subtraction operation to a "long".
>>>> - Make "ZERO_CALENDAR" an instance variable.
>>>> - Add a "NoSuchElementException" for iteration beyond the end of the
>>>> collection.
>>>> - Replace the call to "Thread.sleep(...)" with a call to "wait(...)".
>>>> - Call "Optional#isPresent()" before accessing the value.
>>>> - Change this condition so that it does not always evaluate to "false".
>>>> Expression is always false.
>>>> - This class overrides "equals()" and should therefore also override
>>>> "hashCode()".
>>>> - "equals(Object obj)" should test argument type
>>>> - Not enough arguments in LOG.debug function. Not enough arguments.
>>>> - Remove this return statement from this finally block.
>>>> - "notify" may not wake up the appropriate thread.
>>>> - Remove the boxing to "Double".
>>>> - Classes should not be compared by name
>>>> - "buffers" is a method parameter, and should not be used for
>>>> synchronization.
>>>> 
>>>> Are there any plans to work on static analysis support for Flink project
>>>> or it was intentionally agreed do not use static analysis as time
>>> consuming
>>>> and worthless?
>>>> 
>>>> Thank you in advance for you replies.
>>>> 
>>>> Best Regards,
>>>> ---
>>>> Alex Arkhipov
>>>> 
>>>> 
> 

Reply via email to