wiki:PRO_LIB_CORE_MISUSE_DETECTION_R0

Version 12 (modified by peko, 16 years ago) (diff)

--

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro TicketQuery(summary=PRO_LIB_CORE_MISUSE_DETECTION_R0, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|) failed
current transaction is aborted, commands ignored until end of transaction block

Analysis

Overview

The aim of this task is to identify irregular uses of Properties Library that could be either frequent or hard to find. An example of irregular use is :

public RwProp<Integer> fish() {

return getBean().makeValueProp("fish", Integer.class, complextMethodToComputeFish());

} because the third argument must be a constant.

Task requirements

  1. Write a list with irregular uses - at least 3
  2. Add some checks or asserts to protect from irregular uses
  3. Make tests, which identify irregular uses.

Task result

The result of this task should be source code

Implementation idea

Prolib is a complex library. It is easy to use it irregular . It is hard to find the irregular uses, so it must have lots of conversations between teams. There is some ways to protect from irregular uses :

  1. using a compilator
  1. using exceptions

PRO_LIB_CORE_COMMONS_R0

How to demo

Explain the misuses to the team

Design

  • Irregular pro lib uses:
    • non-pro objects should not be put in any kind of properties THAT CONTAIN the @Own annotation.
    • create method of resource property should not be dependent on any property except for final properties.
    • value properties that are initialized at their invocation
      • should be initialized with ONLY the following:
        • constant primitive types.
        • immutable objects that are not going to change later.
        • final references to objects.
      • should not invoke a method that returns the value that is to be set
        public RwProp<Integer> fish() {
           return getBean().makeValueProp("fish", Integer.class, complextMethodToComputeFish());
         }
        

Implementation

(Implementation results should be described and linked here (from the wiki or the repository))

Testing

Comments

(Write comments for this or later revisions here.)