How VEX Fields Are Determined in Global Reports

When you generate a global report that includes multiple projects from different project groups, Black Duck SCA uses a closest common ancestor approach to determine which values to use for VEX fields like legal_disclaimer and namespace.

What Does This Mean?

Black Duck SCA looks at the project group hierarchy and finds the nearest project group that is a parent (ancestor) to all selected projects. The VEX field values from that common ancestor project group are used in the report.

How It Works: Examples

Example 1: Direct Common Parent

Project hierarchy:

Root (Black Duck Project Groups)
└── Project Group C
├── Project Group A
│   └── Project 1
└── Project Group B
    └── Project 2

When you select: Project 1 and Project 2

Common ancestor: Project Group C

Result: VEX fields from Project Group C are used in the report.

Example 2: Higher-Level Common Parent

Project hierarchy:

Root (Black Duck Project Groups)
└── Project Group D
    ├── Project Group C
    │   └── Project Group A
    │       └── Project 1
    └── Project Group B
        └── Project 2

When you select: Project 1 and Project 2

Common ancestor: Project Group D

Result: VEX fields from Project Group D are used in the report.

Example 3: Single Project Selected

Project hierarchy:

Root (Black Duck Project Groups)
└── Project Group D
    └── Project Group C
        └── Project Group A
            └── Project 1

When you select: Only Project 1

Common ancestor: Project Group A (the immediate parent)

Result: VEX fields from Project Group A are used in the report.

Example 4: No Shared Parent (Uses Root)

Project hierarchy:

Root (Black Duck Project Groups)
├── Project Group C
│   └── Project Group A
│       └── Project 1
└── Project Group D
    └── Project Group B
        └── Project 2

When you select: Project 1 and Project 2

Common ancestor: Root (no other shared parent exists)

Result: VEX fields from the Root project group are used in the report.

Key Takeaways

  • Black Duck SCA finds the nearest project group that is a parent to all selected projects
  • VEX field values from that ancestor project group are applied to the report
  • If projects have no common parent, root-level VEX fields are used
  • For single-project reports, the immediate parent project group is used