JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.
If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.
If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.
| CodeSonar® 9.2p0 | CONFIDENTIAL | CodeSecure Inc |
A base class is declared virtual, but is not a common base class in a diamond hierarchy.
This class is a strict subset of Virtual Base Class.
| Class Name | Virtual Base Class not In Diamond | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Significance | style | |||||||||||||||
| Mnemonic | LANG.TYPE.BCVNID | |||||||||||||||
| Categories |
|
|||||||||||||||
| Availability | Available for C and C++. |
|||||||||||||||
| Enabling | Checks for this warning class are disabled by default,
and require the unnormalized
C ASTs for the project. To enable them, add the following
WARNING_FILTER rule and RETAIN_UNNORMALIZED_C_AST specification to the project configuration file.
RETAIN_UNNORMALIZED_C_AST = Yes WARNING_FILTER += allow class="Virtual Base Class not In Diamond" |
// BaseA BaseB BaseC BaseD // / \ | / \ / // / \ | / \ / // Int1 Int2 Int3 Int4 Int5 // \ / | \ / // \ / | \ / // DerivedX DerivedY DerivedZ class BaseA {}; class BaseB {}; class BaseC {}; class BaseD {}; class Int1: public virtual BaseA {}; // ok: within a diamond hierarchy class Int2: public virtual BaseA {}; // ok: within a diamond hierarchy class Int3: public virtual BaseB {}; // 'Virtual Base Class not In Diamond' warning issued here class Int4: public virtual BaseC {}; // ok: within a diamond hierarchy class Int5: public virtual BaseC, public virtual BaseD {}; // 'Virtual Base Class not In Diamond' warning issued here class DerivedX: public Int1, public Int2 {}; class DerivedY: public Int3 {}; class DerivedZ: public Int4, public Int5 {};
If Virtual Base Class checks are enabled, a Virtual Base Class warning will be issued for every intermediate class declaration (Int1, Int2, Int3, Int4, Int5) in the example.
The following configuration file parameters affect checks for this warning class.
To report problems with this documentation, please visit https://support.codesecure.com/.