You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ofbiz.apache.org by "Julian Leichert (JIRA)" <ji...@apache.org> on 2017/09/11 08:56:00 UTC

[jira] [Updated] (OFBIZ-9702) [FB] Package org.apache.ofbiz.widget.renderer.macro

     [ https://issues.apache.org/jira/browse/OFBIZ-9702?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julian Leichert updated OFBIZ-9702:
-----------------------------------
    Attachment: OFBIZ-9702_org.apache.ofbiz.widget.renderer.macro_bugfixes.patch

class MacroFormRenderer
  - added StringBuffer to create String extraParameter and ajaxParams
  - removed redundant null-checks
  - removed modelFormField.getForm() in line 1062,1000 because it does not do anything
  - Line 1639: changed Integer.toString to String.valueOf for better null handling

class MacroScreenRenderer
 - Fixed minor Findbugs Warnings
 - Line 1022: added null-check

> [FB] Package org.apache.ofbiz.widget.renderer.macro
> ---------------------------------------------------
>
>                 Key: OFBIZ-9702
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-9702
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: ALL APPLICATIONS, ALL COMPONENTS
>    Affects Versions: Trunk
>            Reporter: Julian Leichert
>            Priority: Minor
>         Attachments: OFBIZ-9702_org.apache.ofbiz.widget.renderer.macro_bugfixes.patch
>
>
> MacroFormRenderer.java:237, RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE
> - RCN: Redundant nullcheck of fieldMap, which is known to be non-null in org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.renderDisplayField(Appendable, Map, ModelFormField$DisplayField)
> This method contains a redundant check of a known non-null value against the constant null.
> MacroFormRenderer.java:246, SBSC_USE_STRINGBUFFER_CONCATENATION
> - SBSC: org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.renderDisplayField(Appendable, Map, ModelFormField$DisplayField) concatenates strings using + in a loop
> The method seems to be building a String using concatenation in a loop. In each iteration, the String is converted to a StringBuffer/StringBuilder, appended to, and converted back to a String. This can lead to a cost quadratic in the number of iterations, as the growing string is recopied in each iteration.
> Better performance can be obtained by using a StringBuffer (or StringBuilder in Java 1.5) explicitly.
> For example:
>   // This is bad
>   String s = "";
>   for (int i = 0; i < field.length; ++i) {
>     s = s + field[i];
>   }
>   // This is better
>   StringBuffer buf = new StringBuffer();
>   for (int i = 0; i < field.length; ++i) {
>     buf.append(field[i]);
>   }
>   String s = buf.toString();
> MacroFormRenderer.java:538, DM_BOXED_PRIMITIVE_FOR_PARSING
> - Bx: Boxing/unboxing to parse a primitive org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.renderDateTimeField(Appendable, Map, ModelFormField$DateTimeField)
> A boxed primitive is created from a String, just to extract the unboxed primitive value. It is more efficient to just call the static parseXXX method.
> MacroFormRenderer.java:1000, RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT
> Return value of method without side effect is ignored
> This code calls a method and ignores the return value. However our analysis shows that the method (including its implementations in subclasses if any) does not produce any effect other than return value. Thus this call can be removed.
> We are trying to reduce the false positives as much as possible, but in some cases this warning might be wrong. Common false-positive cases include:
> - The method is designed to be overridden and produce a side effect in other projects which are out of the scope of the analysis.
> - The method is called to trigger the class loading which may have a side effect.
> - The method is called just to get some exception.
> If you feel that our assumption is incorrect, you can use a @CheckReturnValue annotation to instruct FindBugs that ignoring the return value of this method is acceptable.
> MacroFormRenderer.java:1062, RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT, Priorität: Normal
> Return value of method without side effect is ignored
> This code calls a method and ignores the return value. However our analysis shows that the method (including its implementations in subclasses if any) does not produce any effect other than return value. Thus this call can be removed.
> We are trying to reduce the false positives as much as possible, but in some cases this warning might be wrong. Common false-positive cases include:
> - The method is designed to be overridden and produce a side effect in other projects which are out of the scope of the analysis.
> - The method is called to trigger the class loading which may have a side effect.
> - The method is called just to get some exception.
> If you feel that our assumption is incorrect, you can use a @CheckReturnValue annotation to instruct FindBugs that ignoring the return value of this method is acceptable.
> MacroFormRenderer.java:1275, DM_CONVERT_CASE, Priorität: Niedrig
> Dm: Use of non-localized String.toUpperCase() or String.toLowerCase() in org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.renderFieldTitle(Appendable, Map, ModelFormField)
> A String is being converted to upper or lowercase, using the platform's default encoding. This may result in improper conversions when used with international characters. Use the
> String.toUpperCase( Locale l )
> String.toLowerCase( Locale l )
> versions instead.
> MacroFormRenderer.java:1639, NP_NULL_ON_SOME_PATH
> - NP: Possible null pointer dereference of itemIndex in org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.renderFormatItemRowOpen(Appendable, Map, ModelForm)
> There is a branch of statement that, if executed, guarantees that a null value will be dereferenced, which would generate a NullPointerException when the code is executed. Of course, the problem might be that the branch or statement is infeasible and that the null pointer exception can't ever be executed; deciding that is beyond the ability of FindBugs.
> MacroFormRenderer.java:2339, RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE
> - RCN: Redundant nullcheck of prepLinkText, which is known to be non-null in org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.renderNextPrev(Appendable, Map, ModelForm)
> This method contains a redundant check of a known non-null value against the constant null.
> MacroFormRenderer.java:2979, SBSC_USE_STRINGBUFFER_CONCATENATION
> - SBSC: org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.createAjaxParamsFromUpdateAreas(List, String, Map) concatenates strings using + in a loop
> The method seems to be building a String using concatenation in a loop. In each iteration, the String is converted to a StringBuffer/StringBuilder, appended to, and converted back to a String. This can lead to a cost quadratic in the number of iterations, as the growing string is recopied in each iteration.
> Better performance can be obtained by using a StringBuffer (or StringBuilder in Java 1.5) explicitly.
> For example:
>   // This is bad
>   String s = "";
>   for (int i = 0; i < field.length; ++i) {
>     s = s + field[i];
>   }
>   // This is better
>   StringBuffer buf = new StringBuffer();
>   for (int i = 0; i < field.length; ++i) {
>     buf.append(field[i]);
>   }
>   String s = buf.toString();
> MacroFormRenderer.java:3069, RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE
> - RCN: Nullcheck of modelFormField at line 3083 of value previously dereferenced in org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.makeHyperlinkByType(Appendable, String, String, String, String, Map, String, String, String, ModelFormField, HttpServletRequest, HttpServletResponse, Map)
> A value is checked here to see whether it is null, but this value can't be null because it was previously dereferenced and if it were null a null pointer exception would have occurred at the earlier dereference. Essentially, this code and the previous dereference disagree as to whether this value is allowed to be null. Either the check is redundant or the previous dereference is erroneous.
> MacroFormRenderer.java:3188, RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE
> RCN: Redundant nullcheck of hiddenFormName, which is known to be non-null in org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.makeHyperlinkString(Appendable, String, String, String, Map, String, String, ModelFormField, HttpServletRequest, HttpServletResponse, Map, String)
> This method contains a redundant check of a known non-null value against the constant null.
> MacroFormRenderer.java:3240, RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE
> - RCN: Redundant nullcheck of hiddenFormName, which is known to be non-null in org.apache.ofbiz.widget.renderer.macro.MacroFormRenderer.makeHiddenFormLinkAnchor(Appendable, String, String, String, ModelFormField, HttpServletRequest, HttpServletResponse, Map)
> This method contains a redundant check of a known non-null value against the constant null.
> MacroScreenRenderer.java:443, DM_CONVERT_CASE
> - Dm: Use of non-localized String.toUpperCase() or String.toLowerCase() in org.apache.ofbiz.widget.renderer.macro.MacroScreenRenderer.renderContentEnd(Appendable, Map, ModelScreenWidget$Content)
> A String is being converted to upper or lowercase, using the platform's default encoding. This may result in improper conversions when used with international characters. Use the
> String.toUpperCase( Locale l )
> String.toLowerCase( Locale l )
> versions instead.
> MacroScreenRenderer.java:443, RV_CHECK_FOR_POSITIVE_INDEXOF
> - RV: org.apache.ofbiz.widget.renderer.macro.MacroScreenRenderer.renderContentEnd(Appendable, Map, ModelScreenWidget$Content) checks to see if result of String.indexOf is positive
> The method invokes String.indexOf and checks to see if the result is positive or non-positive. It is much more typical to check to see if the result is negative or non-negative. It is positive only if the substring checked for occurs at some place other than at the beginning of the String.
> MacroScreenRenderer.java:555, DM_CONVERT_CASE
> - Dm: Use of non-localized String.toUpperCase() or String.toLowerCase() in org.apache.ofbiz.widget.renderer.macro.MacroScreenRenderer.renderSubContentEnd(Appendable, Map, ModelScreenWidget$SubContent)
> A String is being converted to upper or lowercase, using the platform's default encoding. This may result in improper conversions when used with international characters. Use the
> String.toUpperCase( Locale l )
> String.toLowerCase( Locale l )
> versions instead.
> MacroScreenRenderer.java:555, RV_CHECK_FOR_POSITIVE_INDEXOF
> - RV: org.apache.ofbiz.widget.renderer.macro.MacroScreenRenderer.renderSubContentEnd(Appendable, Map, ModelScreenWidget$SubContent) checks to see if result of String.indexOf is positive
> The method invokes String.indexOf and checks to see if the result is positive or non-positive. It is much more typical to check to see if the result is negative or non-negative. It is positive only if the substring checked for occurs at some place other than at the beginning of the String.
> MacroScreenRenderer.java:726, DM_CONVERT_CASE
> - Dm: Use of non-localized String.toUpperCase() or String.toLowerCase() in org.apache.ofbiz.widget.renderer.macro.MacroScreenRenderer.renderScreenletPaginateMenu(Appendable, Map, ModelScreenWidget$Form)
> A String is being converted to upper or lowercase, using the platform's default encoding. This may result in improper conversions when used with international characters. Use the
> String.toUpperCase( Locale l )
> String.toLowerCase( Locale l )
> versions instead.
> MacroScreenRenderer.java:1022, NP_NULL_ON_SOME_PATH
> - NP: Possible null pointer dereference of modelScreen in org.apache.ofbiz.widget.renderer.macro.MacroScreenRenderer.renderPortalPagePortletBody(Appendable, Map, ModelScreenWidget$PortalPage, GenericValue)
> There is a branch of statement that, if executed, guarantees that a null value will be dereferenced, which would generate a NullPointerException when the code is executed. Of course, the problem might be that the branch or statement is infeasible and that the null pointer exception can't ever be executed; deciding that is beyond the ability of FindBugs.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)