Julian Leichert created OFBIZ-9700:
--------------------------------------

             Summary: [FB] Package org.apache.ofbiz.base.util.string
                 Key: OFBIZ-9700
                 URL: https://issues.apache.org/jira/browse/OFBIZ-9700
             Project: OFBiz
          Issue Type: Sub-task
          Components: base
    Affects Versions: Trunk
            Reporter: Julian Leichert
            Priority: Minor


FlexibleStringExpander.java:245, NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT
- NP: 
org.apache.ofbiz.base.util.string.FlexibleStringExpander$Key.equals(Object) 
does not check for null argument

This implementation of equals(Object) violates the contract defined by 
java.lang.Object.equals() because it does not check for null being passed as 
the argument. All equals() methods should return false if passed a null value.

FlexibleStringExpander.java:444, REC_CATCH_EXCEPTION
- REC: Exception is caught when Exception is not thrown in 
org.apache.ofbiz.base.util.string.FlexibleStringExpander.expandString(Map, 
TimeZone, Locale)

This method uses a try-catch block that catches Exception objects, but 
Exception is not thrown within the try block, and RuntimeException is not 
explicitly caught. It is a common bug pattern to say try { ... } catch 
(Exception e) { something } as a shorthand for catching a number of types of 
exception each of whose catch blocks is identical, but this construct also 
accidentally catches RuntimeException as well, masking potential bugs.

A better approach is to either explicitly catch the specific exceptions that 
are thrown, or to explicitly catch RuntimeException exception, rethrow it, and 
then catch all non-Runtime Exceptions, as shown below:

  try {
    ...
  } catch (RuntimeException e) {
    throw e;
  } catch (Exception e) {
    ... deal with all non-runtime exceptions ...
  }
FlexibleStringExpander.java:540, SE_NO_SERIALVERSIONID
- SnVI: 
org.apache.ofbiz.base.util.string.FlexibleStringExpander$ConstSimpleElem is 
Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

FlexibleStringExpander.java:567, SE_NO_SERIALVERSIONID
- SnVI: 
org.apache.ofbiz.base.util.string.FlexibleStringExpander$ConstOffsetElem is 
Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

FlexibleStringExpander.java:587, SE_NO_SERIALVERSIONID
- SnVI: org.apache.ofbiz.base.util.string.FlexibleStringExpander$CurrElem is 
Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

FlexibleStringExpander.java:619, SE_NO_SERIALVERSIONID
- SnVI: org.apache.ofbiz.base.util.string.FlexibleStringExpander$Elements is 
Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

FlexibleStringExpander.java:642, SE_NO_SERIALVERSIONID
- SnVI: org.apache.ofbiz.base.util.string.FlexibleStringExpander$ScriptElem is 
Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

FlexibleStringExpander.java:674, SE_NO_SERIALVERSIONID
- SnVI: org.apache.ofbiz.base.util.string.FlexibleStringExpander$NestedVarElem 
is Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

FlexibleStringExpander.java:708, SE_NO_SERIALVERSIONID
- SnVI: org.apache.ofbiz.base.util.string.FlexibleStringExpander$VarElem is 
Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

JuelConnector.java:81, DE_MIGHT_IGNORE
- DE: 
org.apache.ofbiz.base.util.string.JuelConnector$ExtendedAstBracket.setValue(Bindings,
 ELContext, Object) might ignore java.lang.Exception

This method might ignore an exception.  In general, exceptions should be 
handled or reported in some way, or they should be thrown out of the method.

JuelConnector.java:115, DE_MIGHT_IGNORE
- DE: 
org.apache.ofbiz.base.util.string.JuelConnector$ExtendedAstDot.setValue(Bindings,
 ELContext, Object) might ignore java.lang.Exception

This method might ignore an exception.  In general, exceptions should be 
handled or reported in some way, or they should be thrown out of the method.

JuelConnector.java:177, SE_NO_SERIALVERSIONID
- SnVI: org.apache.ofbiz.base.util.string.JuelConnector$ExtendedBuilder is 
Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

UelFunctions.java:261, REC_CATCH_EXCEPTION
- REC: Exception is caught when Exception is not thrown in new 
org.apache.ofbiz.base.util.string.UelFunctions$Functions()

This method uses a try-catch block that catches Exception objects, but 
Exception is not thrown within the try block, and RuntimeException is not 
explicitly caught. It is a common bug pattern to say try { ... } catch 
(Exception e) { something } as a shorthand for catching a number of types of 
exception each of whose catch blocks is identical, but this construct also 
accidentally catches RuntimeException as well, masking potential bugs.

A better approach is to either explicitly catch the specific exceptions that 
are thrown, or to explicitly catch RuntimeException exception, rethrow it, and 
then catch all non-Runtime Exceptions, as shown below:

  try {
    ...
  } catch (RuntimeException e) {
    throw e;
  } catch (Exception e) {
    ... deal with all non-runtime exceptions ...
  }
UelFunctions.java:403, DM_CONVERT_CASE
- Dm: Use of non-localized String.toUpperCase() or String.toLowerCase() in 
org.apache.ofbiz.base.util.string.UelFunctions.toLowerCase(String)

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.

UelFunctions.java:410, DM_CONVERT_CASE
- Dm: Use of non-localized String.toUpperCase() or String.toLowerCase() in 
org.apache.ofbiz.base.util.string.UelFunctions.toUpperCase(String)

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.

UelFunctions.java:442, REC_CATCH_EXCEPTION
- REC: Exception is caught when Exception is not thrown in 
org.apache.ofbiz.base.util.string.UelFunctions.urlExists(String)

This method uses a try-catch block that catches Exception objects, but 
Exception is not thrown within the try block, and RuntimeException is not 
explicitly caught. It is a common bug pattern to say try { ... } catch 
(Exception e) { something } as a shorthand for catching a number of types of 
exception each of whose catch blocks is identical, but this construct also 
accidentally catches RuntimeException as well, masking potential bugs.

A better approach is to either explicitly catch the specific exceptions that 
are thrown, or to explicitly catch RuntimeException exception, rethrow it, and 
then catch all non-Runtime Exceptions, as shown below:

  try {
    ...
  } catch (RuntimeException e) {
    throw e;
  } catch (Exception e) {
    ... deal with all non-runtime exceptions ...
  }
UelFunctions.java:458, REC_CATCH_EXCEPTION, Priorität: Niedrig
- REC: Exception is caught when Exception is not thrown in 
org.apache.ofbiz.base.util.string.UelFunctions.readHtmlDocument(String)

This method uses a try-catch block that catches Exception objects, but 
Exception is not thrown within the try block, and RuntimeException is not 
explicitly caught. It is a common bug pattern to say try { ... } catch 
(Exception e) { something } as a shorthand for catching a number of types of 
exception each of whose catch blocks is identical, but this construct also 
accidentally catches RuntimeException as well, masking potential bugs.

A better approach is to either explicitly catch the specific exceptions that 
are thrown, or to explicitly catch RuntimeException exception, rethrow it, and 
then catch all non-Runtime Exceptions, as shown below:

  try {
    ...
  } catch (RuntimeException e) {
    throw e;
  } catch (Exception e) {
    ... deal with all non-runtime exceptions ...
  }
UelFunctions.java:475, REC_CATCH_EXCEPTION
- REC: Exception is caught when Exception is not thrown in 
org.apache.ofbiz.base.util.string.UelFunctions.readXmlDocument(String)

This method uses a try-catch block that catches Exception objects, but 
Exception is not thrown within the try block, and RuntimeException is not 
explicitly caught. It is a common bug pattern to say try { ... } catch 
(Exception e) { something } as a shorthand for catching a number of types of 
exception each of whose catch blocks is identical, but this construct also 
accidentally catches RuntimeException as well, masking potential bugs.

A better approach is to either explicitly catch the specific exceptions that 
are thrown, or to explicitly catch RuntimeException exception, rethrow it, and 
then catch all non-Runtime Exceptions, as shown below:

  try {
    ...
  } catch (RuntimeException e) {
    throw e;
  } catch (Exception e) {
    ... deal with all non-runtime exceptions ...
  }
UelFunctions.java:485, OS_OPEN_STREAM_EXCEPTION_PATH
- OS: org.apache.ofbiz.base.util.string.UelFunctions.writeXmlDocument(String, 
Node, String, boolean, boolean, int) may fail to close stream on exception

The method creates an IO stream object, does not assign it to any fields, pass 
it to other methods, or return it, and does not appear to close it on all 
possible exception paths out of the method.  This may result in a file 
descriptor leak.  It is generally a good idea to use a finally block to ensure 
that streams are closed.

UelFunctions.java:492, REC_CATCH_EXCEPTION
- REC: Exception is caught when Exception is not thrown in 
org.apache.ofbiz.base.util.string.UelFunctions.writeXmlDocument(String, Node, 
String, boolean, boolean, int)

This method uses a try-catch block that catches Exception objects, but 
Exception is not thrown within the try block, and RuntimeException is not 
explicitly caught. It is a common bug pattern to say try { ... } catch 
(Exception e) { something } as a shorthand for catching a number of types of 
exception each of whose catch blocks is identical, but this construct also 
accidentally catches RuntimeException as well, masking potential bugs.

A better approach is to either explicitly catch the specific exceptions that 
are thrown, or to explicitly catch RuntimeException exception, rethrow it, and 
then catch all non-Runtime Exceptions, as shown below:

  try {
    ...
  } catch (RuntimeException e) {
    throw e;
  } catch (Exception e) {
    ... deal with all non-runtime exceptions ...
  }
UelFunctions.java:517, DM_DEFAULT_ENCODING
- Dm: Found reliance on default encoding in 
org.apache.ofbiz.base.util.string.UelFunctions.toHtmlString(Node, String, 
boolean, int): String.getBytes()

Found a call to a method which will perform a byte to String (or String to 
byte) conversion, and will assume that the default platform encoding is 
suitable. This will cause the application behaviour to vary between platforms. 
Use an alternative API and specify a charset name or Charset object explicitly.

UelFunctions.java:522, DM_DEFAULT_ENCODING
- Dm: Found reliance on default encoding in 
org.apache.ofbiz.base.util.string.UelFunctions.toHtmlString(Node, String, 
boolean, int): java.io.ByteArrayOutputStream.toString()

Found a call to a method which will perform a byte to String (or String to 
byte) conversion, and will assume that the default platform encoding is 
suitable. This will cause the application behaviour to vary between platforms. 
Use an alternative API and specify a charset name or Charset object explicitly.

UelFunctions.java:523, REC_CATCH_EXCEPTION
- REC: Exception is caught when Exception is not thrown in 
org.apache.ofbiz.base.util.string.UelFunctions.toHtmlString(Node, String, 
boolean, int)

This method uses a try-catch block that catches Exception objects, but 
Exception is not thrown within the try block, and RuntimeException is not 
explicitly caught. It is a common bug pattern to say try { ... } catch 
(Exception e) { something } as a shorthand for catching a number of types of 
exception each of whose catch blocks is identical, but this construct also 
accidentally catches RuntimeException as well, masking potential bugs.

A better approach is to either explicitly catch the specific exceptions that 
are thrown, or to explicitly catch RuntimeException exception, rethrow it, and 
then catch all non-Runtime Exceptions, as shown below:

  try {
    ...
  } catch (RuntimeException e) {
    throw e;
  } catch (Exception e) {
    ... deal with all non-runtime exceptions ...
  }
UelFunctions.java:534, DM_DEFAULT_ENCODING
- Dm: Found reliance on default encoding in 
org.apache.ofbiz.base.util.string.UelFunctions.toXmlString(Node, String, 
boolean, boolean, int): java.io.ByteArrayOutputStream.toString()

Found a call to a method which will perform a byte to String (or String to 
byte) conversion, and will assume that the default platform encoding is 
suitable. This will cause the application behaviour to vary between platforms. 
Use an alternative API and specify a charset name or Charset object explicitly.

UelFunctions.java:535, REC_CATCH_EXCEPTION, Priorität: Niedrig
- REC: Exception is caught when Exception is not thrown in 
org.apache.ofbiz.base.util.string.UelFunctions.toXmlString(Node, String, 
boolean, boolean, int)

This method uses a try-catch block that catches Exception objects, but 
Exception is not thrown within the try block, and RuntimeException is not 
explicitly caught. It is a common bug pattern to say try { ... } catch 
(Exception e) { something } as a shorthand for catching a number of types of 
exception each of whose catch blocks is identical, but this construct also 
accidentally catches RuntimeException as well, masking potential bugs.

A better approach is to either explicitly catch the specific exceptions that 
are thrown, or to explicitly catch RuntimeException exception, rethrow it, and 
then catch all non-Runtime Exceptions, as shown below:

  try {
    ...
  } catch (RuntimeException e) {
    throw e;
  } catch (Exception e) {
    ... deal with all non-runtime exceptions ...
  }
UelUtil.java:-1, CI_CONFUSED_INHERITANCE
- CI: Class org.apache.ofbiz.base.util.string.UelUtil is final but declares 
protected field org.apache.ofbiz.base.util.string.UelUtil.module

This class is declared to be final, but declares fields to be protected. Since 
the class is final, it can not be derived from, and the use of protected is 
confusing. The access modifier for the field should be changed to private or 
public to represent the true use for the field.

UelUtil.java:-1, SE_BAD_FIELD
- Se: Class org.apache.ofbiz.base.util.string.UelUtil$BasicValueExpression 
defines non-transient non-serializable instance field elContext

This Serializable class defines a non-primitive instance field which is neither 
transient, Serializable, or java.lang.Object, and does not appear to implement 
the Externalizable interface or the readObject() and writeObject() methods.  
Objects of this class will not be deserialized correctly if a non-Serializable 
object is stored in this field.

UelUtil.java:212, SE_NO_SERIALVERSIONID
- SnVI: org.apache.ofbiz.base.util.string.UelUtil$ReadOnlyExpression is 
Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

UelUtil.java:245, NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT
- NP: 
org.apache.ofbiz.base.util.string.UelUtil$ReadOnlyExpression.equals(Object) 
does not check for null argument

This implementation of equals(Object) violates the contract defined by 
java.lang.Object.equals() because it does not check for null being passed as 
the argument. All equals() methods should return false if passed a null value.

UelUtil.java:273, SE_NO_SERIALVERSIONID, Priorität: Niedrig
- SnVI: org.apache.ofbiz.base.util.string.UelUtil$BasicValueExpression is 
Serializable; consider declaring a serialVersionUID

This class implements the Serializable interface, but does not define a 
serialVersionUID field.  A change as simple as adding a reference to a .class 
object will add synthetic fields to the class, which will unfortunately change 
the implicit serialVersionUID (e.g., adding a reference to String.class will 
generate a static field class$java$lang$String). Also, different source code to 
bytecode compilers may use different naming conventions for synthetic variables 
generated for references to class objects or inner classes. To ensure 
interoperability of Serializable across versions, consider adding an explicit 
serialVersionUID.

UelUtil.java:282, NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT
- NP: 
org.apache.ofbiz.base.util.string.UelUtil$BasicValueExpression.equals(Object) 
does not check for null argument

This implementation of equals(Object) violates the contract defined by 
java.lang.Object.equals() because it does not check for null being passed as 
the argument. All equals() methods should return false if passed a null value.

UelUtil.java:339, NP_LOAD_OF_KNOWN_NULL_VALUE
- NP: Load of known null value in 
org.apache.ofbiz.base.util.string.UelUtil$ExtendedCompositeResolver.setValue(ELContext,
 Object, Object, Object)

The variable referenced at this point is known to be null due to an earlier 
check against null. Although this is valid, it might be a mistake (perhaps you 
intended to refer to a different variable, or perhaps the earlier check to see 
if the variable is null should have been a check to see if it was non-null).

UelUtil.java:429, NP_LOAD_OF_KNOWN_NULL_VALUE
- NP: Load of known null value in 
org.apache.ofbiz.base.util.string.UelUtil$ExtendedMapResolver.getValue(ELContext,
 Object, Object)

The variable referenced at this point is known to be null due to an earlier 
check against null. Although this is valid, it might be a mistake (perhaps you 
intended to refer to a different variable, or perhaps the earlier check to see 
if the variable is null should have been a check to see if it was non-null).



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

Reply via email to