[
https://issues.apache.org/jira/browse/SOLR-13322?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16792166#comment-16792166
]
Uwe Schindler commented on SOLR-13322:
--------------------------------------
Hi,
bq. In the first case there's the additional question of whether or not we can
suppress just the one bundle (jdk-system-out) or if we have to suppress all
forbidden apis checks (which is a worrisome thought).
That won't work, because if you suppress forbidden for some class or method it
affects all signatures. But there is a trick which I'd propose here!
As said before you can also add {{@SuppressForbidden}} to methods. One way to
fix this is to add a private static method to the CLI class that just prints a
line (it's like a mini-logging framework). But in fact it only delegates to
{{System.out.println()}}. This method is marked with {{@SuppressForbidden}}.
As you have to repeat this for every CLI class, my proposal would be: Define an
interface with no virtual methods, but exactly one static one (Java 8+ allows
this). This static method is just there to print a line in CLI. The interface
could be named {{CommandlineTool}} and the whole interface is marked with
{{@SuppressForbidden}}.
All CLI programs in solr just implement that interface and can call that
method. This make the code actually much shorter, as you don't need
{{System.out}} everywhere.
bq. Also it's worth noting that a there are a couple of other detections
relating to eclipse generated try/catch blocks that are triggered by removing
the above line from the build.
Those should be fixed ASAP.
> Enable checking for System.out references in Solr codebase
> ----------------------------------------------------------
>
> Key: SOLR-13322
> URL: https://issues.apache.org/jira/browse/SOLR-13322
> Project: Solr
> Issue Type: Improvement
> Security Level: Public(Default Security Level. Issues are Public)
> Components: Build
> Affects Versions: master (9.0)
> Reporter: Gus Heck
> Priority: Minor
> Attachments: sysout-forbidden.txt
>
>
> This is almost trivial (just delete this line from the solr build.xml):
> {code:java}
> <target name="-check-forbidden-sysout"/>{code}
> What that line is doing is overriding the top level target that does the
> checking and makes it do nothing.
> BUT.... unfortunately the "almost" of this is that that instantly detects a
> large number of things, many of which are valid usages because they are in
> command line tools that really do want to report information to system out
> (I'll attach the output)
> This leaves us with two possibilities:
> # Add @ SuppressForbidden (though there seem to be two of these)
> # Convert the CLI oriented code to use logging (probably a custom logging
> config for this use case with no leading date stamp etc...)
> In the first case there's the additional question of whether or not we can
> suppress just the one bundle (jdk-system-out) or if we have to suppress all
> forbidden apis checks (which is a worrisome thought).
> Also it's worth noting that a there are a couple of other detections relating
> to eclipse generated try/catch blocks that are triggered by removing the
> above line from the build.
> Conversation on Slack indicates that [~thetaphi] will likely have some
> thoughts on this.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]