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

Julian Leichert updated OFBIZ-9781:
-----------------------------------
    Attachment: 
OFBIZ-9781_org.apache.ofbiz.order.shoppingcart.product_bugfixes.patch

class ProductDisplayWorker 
 - added hashCode

class ProductPromoWorker
 - multiple lines : removed redundant null-check
 - line 383 : changed catched Exception
 - line 880 : changed keySet to foreach with entrySet
 - multiple lines : indexOf "" to '' (increase performance)
 - line 2092 : removed useless else
 - line 2147 : changed to isEmpty (correct way to check if String empty)


> [FB] Package org.apache.ofbiz.order.shoppingcart.product
> --------------------------------------------------------
>
>                 Key: OFBIZ-9781
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-9781
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: order
>    Affects Versions: Trunk
>            Reporter: Julian Leichert
>            Priority: Minor
>         Attachments: 
> OFBIZ-9781_org.apache.ofbiz.order.shoppingcart.product_bugfixes.patch
>
>
> ProductDisplayWorker.java:63, BC_UNCONFIRMED_CAST
> - BC: Unchecked/unconfirmed cast from javax.servlet.ServletRequest to 
> javax.servlet.http.HttpServletRequest in 
> org.apache.ofbiz.order.shoppingcart.product.ProductDisplayWorker.getRandomCartProductAssoc(ServletRequest,
>  boolean)
> This cast is unchecked, and not all instances of the type casted from can be 
> cast to the type it is being cast to. Check that your program logic ensures 
> that this cast will not fail.
> ProductDisplayWorker.java:150, BC_UNCONFIRMED_CAST
> - BC: Unchecked/unconfirmed cast from javax.servlet.ServletRequest to 
> javax.servlet.http.HttpServletRequest in 
> org.apache.ofbiz.order.shoppingcart.product.ProductDisplayWorker.getQuickReorderProducts(ServletRequest)
> This cast is unchecked, and not all instances of the type casted from can be 
> cast to the type it is being cast to. Check that your program logic ensures 
> that this cast will not fail.
> ProductDisplayWorker.java:303, SE_COMPARATOR_SHOULD_BE_SERIALIZABLE
> - Se: 
> org.apache.ofbiz.order.shoppingcart.product.ProductDisplayWorker$ProductByMapComparator
>  implements Comparator but not Serializable
> This class implements the Comparator interface. You should consider whether 
> or not it should also implement the Serializable interface. If a comparator 
> is used to construct an ordered collection such as a TreeMap, then the 
> TreeMap will be serializable only if the comparator is also serializable. As 
> most comparators have little or no state, making them serializable is 
> generally easy and good defensive programming.
> ProductDisplayWorker.java:329, HE_EQUALS_USE_HASHCODE
> - HE: 
> org.apache.ofbiz.order.shoppingcart.product.ProductDisplayWorker$ProductByMapComparator
>  defines equals and uses Object.hashCode()
> This class overrides equals(Object), but does not override hashCode(), and 
> inherits the implementation of hashCode() from java.lang.Object (which 
> returns the identity hash code, an arbitrary value assigned to the object by 
> the VM).  Therefore, the class is very likely to violate the invariant that 
> equal objects must have equal hashcodes.
> If you don't think instances of this class will ever be inserted into a 
> HashMap/HashTable, the recommended hashCode implementation to use is:
> public int hashCode() {
>   assert false : "hashCode not designed";
>   return 42; // any arbitrary constant will do
>   }
> ProductPromoWorker.java:117, RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE
> - RCN: Redundant nullcheck of productStore, which is known to be non-null in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.getStoreProductPromos(Delegator,
>  LocalDispatcher, ServletRequest)
> This method contains a redundant check of a known non-null value against the 
> constant null.
> ProductPromoWorker.java:382, REC_CATCH_EXCEPTION
> - REC: Exception is caught when Exception is not thrown in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.doPromotions(ShoppingCart,
>  List, LocalDispatcher)
> 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 ...
>   }
> ProductPromoWorker.java:507, NP_LOAD_OF_KNOWN_NULL_VALUE
> - NP: Load of known null value in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.getProductPromoUseLimit(GenericValue,
>  String, Delegator)
> 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).
> ProductPromoWorker.java:507, RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE
> - RCN: Redundant nullcheck of candidateUseLimit which is known to be null in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.getProductPromoUseLimit(GenericValue,
>  String, Delegator)
> This method contains a redundant check of a known null value against the 
> constant null.
> ProductPromoWorker.java:567, NP_LOAD_OF_KNOWN_NULL_VALUE
> - NP: Load of known null value in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.getProductPromoCodeUseLimit(GenericValue,
>  String, Delegator)
> 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).
> ProductPromoWorker.java:567, RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE
> - RCN: Redundant nullcheck of codeUseLimit which is known to be null in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.getProductPromoCodeUseLimit(GenericValue,
>  String, Delegator)
> This method contains a redundant check of a known null value against the 
> constant null.
> ProductPromoWorker.java:882, WMI_WRONG_MAP_ITERATOR
> - WMI: 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.prepareDeltaProductUsageInfoMap(Map,
>  Map) makes inefficient use of keySet iterator instead of entrySet iterator
> This method accesses the value of a Map entry, using a key that was retrieved 
> from a keySet iterator. It is more efficient to use an iterator on the 
> entrySet of the map, to avoid the Map.get(key) lookup.
> ProductPromoWorker.java:1413, RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE
> - RCN: Nullcheck of cart at line 1501 of value previously dereferenced in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.performAction(ProductPromoWorker$ActionResultInfo,
>  GenericValue, ShoppingCart, Delegator, LocalDispatcher, Timestamp)
> 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.
> ProductPromoWorker.java:1489, RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE
> - RCN: Redundant nullcheck of productIds, which is known to be non-null in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.performAction(ProductPromoWorker$ActionResultInfo,
>  GenericValue, ShoppingCart, Delegator, LocalDispatcher, Timestamp)
> This method contains a redundant check of a known non-null value against the 
> constant null.
> ProductPromoWorker.java:1556, NP_LOAD_OF_KNOWN_NULL_VALUE
> - NP: Load of known null value in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.performAction(ProductPromoWorker$ActionResultInfo,
>  GenericValue, ShoppingCart, Delegator, LocalDispatcher, Timestamp)
> 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).
> ProductPromoWorker.java:1563, NP_LOAD_OF_KNOWN_NULL_VALUE
> - NP: Load of known null value in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.performAction(ProductPromoWorker$ActionResultInfo,
>  GenericValue, ShoppingCart, Delegator, LocalDispatcher, Timestamp)
> 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).
> ProductPromoWorker.java:1951, UPM_UNCALLED_PRIVATE_METHOD
> UPM: Private method 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.findAdjustment(GenericValue,
>  List) is never called
> This private method is never called. Although it is possible that the method 
> will be invoked through reflection, it is more likely that the method is 
> never used, and should be removed.
> ProductPromoWorker.java:2094, UC_USELESS_OBJECT
> Useless object created
> Our analysis shows that this object is useless. It's created and modified, 
> but its value never go outside of the method or produce any side-effect. 
> Either there is a mistake and object was intended to be used or it can be 
> removed.
> This analysis rarely produces false-positives. Common false-positive cases 
> include:
> - This object used to implicitly throw some obscure exception.
> - This object used as a stub to generalize the code.
> - This object used to hold strong references to weak/soft-referenced objects.
> ProductPromoWorker.java:2146, INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE, 
> Priorität: Normal
> INT: Bad comparison of nonnegative value with 0 in 
> org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker.handleProductPromoCategories(Set,
>  List, String, Delegator, Timestamp)
> This code compares a value that is guaranteed to be non-negative with a 
> negative constant or zero. 



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

Reply via email to