Code Database (CDB) is an analysis tool that can be used to measure backward compatibility (BaC) between releases of a single executable, a component or an entire release of Symbian OS. It compares two builds and identifies differences between versions that affect the binary and the source compatibility. This information is presented to the user through XML and HTML reports that it generates.
Reports contain information such as, nature of the break, location of the break in the code and the classification of the API in which the break occured.
CDB can detect the following types of breaks:
ordinal breaks
missing enumerations
changes in the data layout and so on.
The figure shows the architecture of CDB2.2.
Following are some of the main advantages of CDB v2.2 over v2.1:
Enables users to specify their own classification methods via a classification plug-in. The SymbianClassifier plug-in retains the same classification methods as CDB 2.1.
Note: A plug-in must be specified to enable classificiation.
Reports when the access level of an API entity is tightened.
Reports any change in the inline functions (gxp package contains this information) as break.
Reports resource file breaks as actual breaks and impacted breaks.
Reports the change in the class size as a new break.
Considers the orphan headers under \epoc32\include
,
creates GXP for them and then generates breaks for changes in the corresponding
orphan headers.
Each of these are explained in New features introduced in CDB2.2.
CDB2.2 introduces the following interface breaks:
reports the tightening of classification for c++ entities
reports changes in inline methods
reports ripples instead of breaks for changes in resource files caused by another break
reports breaks caused by changes in class sizes
checks orphan headers for existing breaks.
Backward Compatibility (BaC) breaks may cause code failure, thus affecting users of Symbian OS. CDB provides a mechanism to identify the unauthorised breaks in a release before it is shipped to customers.
The CDB2.2 user guide contains the following sections:
CDB2.2 (CDB version 2.2) is refered to as CDB all through this guide.