ubc

Tool: ubc TOOL_UBC

Command-line tool for checking and formating certain rules in sphinx and rst-based files.

Little brother of ubCode (TOOL_UBCODE).

Commercial tool

Documentation:

https://ubcode.useblocks.com/ubc/introduction.html

Analysis

@startuml

' Nodes definition 

file "<size:12>Artifact</size>\n**ubc needs.json**\n**file**\n<size:10>ART_UBC_NEEDS_JSON</size>" as ART_UBC_NEEDS_JSON [[../tools/ubc/artifacts.html#ART_UBC_NEEDS_JSON]] #LightBlue
rectangle "<size:12>Feature</size>\n**Check rst files**\n**for linting**\n**problems**\n<size:10>FE_UBC_LINTING</size>" as FE_UBC_LINTING [[../tools/ubc/features.html#FE_UBC_LINTING]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Not covered**\n**format**\n<size:10>ER_UBC_LINTING_NOT_COVERED</size>" as ER_UBC_LINTING_NOT_COVERED [[../tools/ubc/features.html#ER_UBC_LINTING_NOT_COVERED]] #Pink
}
rectangle "<size:12>Feature</size>\n**Format rst**\n**files**\n<size:10>FE_UBC_FORMAT</size>" as FE_UBC_FORMAT [[../tools/ubc/features.html#FE_UBC_FORMAT]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Format**\n**introduces**\n**errors**\n<size:10>ER_UBC_FORMAT_ERRORS</size>" as ER_UBC_FORMAT_ERRORS [[../tools/ubc/features.html#ER_UBC_FORMAT_ERRORS]] #Pink
}
rectangle "<size:12>Feature</size>\n**Clean internal**\n**caches**\n<size:10>FE_UBC_CACHE</size>" as FE_UBC_CACHE [[../tools/ubc/features.html#FE_UBC_CACHE]] #Gold
rectangle "<size:12>Feature</size>\n**Build**\n**needs.json**\n<size:10>FE_UBC_BUILD_JSON</size>" as FE_UBC_BUILD_JSON [[../tools/ubc/features.html#FE_UBC_BUILD_JSON]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Incomplete data**\n<size:10>ER_UBC_JSON_INCOMPLETE</size>" as ER_UBC_JSON_INCOMPLETE [[../tools/ubc/features.html#ER_UBC_JSON_INCOMPLETE]] #Pink
}
rectangle "<size:12>Feature</size>\n**Validate**\n**needs.json**\n<size:10>FE_UBC_VALIDATE_JSON</size>" as FE_UBC_VALIDATE_JSON [[../tools/ubc/features.html#FE_UBC_VALIDATE_JSON]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Unknown file**\n**format**\n<size:10>ER_UBC_VAL_FORMAT</size>" as ER_UBC_VAL_FORMAT [[../tools/ubc/features.html#ER_UBC_VAL_FORMAT]] #Pink
rectangle "<size:12>Fault</size>\n**Incomplete**\n**Validation**\n<size:10>ER_UBC_VAL_INCOMPLETE</size>" as ER_UBC_VAL_INCOMPLETE [[../tools/ubc/features.html#ER_UBC_VAL_INCOMPLETE]] #Pink
}
rectangle "<size:12>Feature</size>\n**Validate**\n**ontology schema**\n**(``ubc schema**\n**validate``)**\n<size:10>FE_UBC_SCHEMA_VALIDATE</size>" as FE_UBC_SCHEMA_VALIDATE [[../tools/ubc/features.html#FE_UBC_SCHEMA_VALIDATE]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Schema rules**\n**not loaded**\n<size:10>ER_UBC_SCHEMA_NO_RULES</size>" as ER_UBC_SCHEMA_NO_RULES [[../tools/ubc/features.html#ER_UBC_SCHEMA_NO_RULES]] #Pink
rectangle "<size:12>Fault</size>\n**Schema rule set**\n**diverges from**\n**Sphinx-Needs**\n<size:10>ER_UBC_SCHEMA_DIVERGE</size>" as ER_UBC_SCHEMA_DIVERGE [[../tools/ubc/features.html#ER_UBC_SCHEMA_DIVERGE]] #Pink
rectangle "<size:12>Fault</size>\n**Safety**\n**violation**\n**reported only**\n**as warning**\n<size:10>ER_UBC_SCHEMA_EXIT_ZERO</size>" as ER_UBC_SCHEMA_EXIT_ZERO [[../tools/ubc/features.html#ER_UBC_SCHEMA_EXIT_ZERO]] #Pink
}
rectangle "<size:12>Feature</size>\n**Impact analysis**\n**on git changes**\n**(``ubc diff**\n**git``)**\n<size:10>FE_UBC_DIFF_GIT</size>" as FE_UBC_DIFF_GIT [[../tools/ubc/features.html#FE_UBC_DIFF_GIT]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Impact depth**\n**truncates the**\n**graph**\n<size:10>ER_UBC_DIFF_DEPTH_CUT</size>" as ER_UBC_DIFF_DEPTH_CUT [[../tools/ubc/features.html#ER_UBC_DIFF_DEPTH_CUT]] #Pink
rectangle "<size:12>Fault</size>\n**Wrong direction**\n**omits incoming**\n**impact**\n<size:10>ER_UBC_DIFF_DIR_WRONG</size>" as ER_UBC_DIFF_DIR_WRONG [[../tools/ubc/features.html#ER_UBC_DIFF_DIR_WRONG]] #Pink
rectangle "<size:12>Fault</size>\n**Uncommitted**\n**local edits not**\n**covered**\n<size:10>ER_UBC_DIFF_DIRTY</size>" as ER_UBC_DIFF_DIRTY [[../tools/ubc/features.html#ER_UBC_DIFF_DIRTY]] #Pink
}
rectangle "<size:12>Feature</size>\n**Generate AI-**\n**agent skill for**\n**the project**\n**(``ubc agent-**\n**skill``)**\n<size:10>FE_UBC_AGENT_SKILL</size>" as FE_UBC_AGENT_SKILL [[../tools/ubc/features.html#FE_UBC_AGENT_SKILL]] #Gold{
'child needs:
rectangle "<size:12>Fault</size>\n**Skill out of**\n**sync with**\n**qualified**\n**configuration**\n<size:10>ER_UBC_AGENT_SKILL_STALE</size>" as ER_UBC_AGENT_SKILL_STALE [[../tools/ubc/features.html#ER_UBC_AGENT_SKILL_STALE]] #Pink
}
node "<size:12>Tool</size>\n**ubc**\n<size:10>TOOL_UBC</size>" as TOOL_UBC [[../tools/ubc/index.html#TOOL_UBC]] #0fbcf9
rectangle "<size:12>Restriction</size>\n**Do not use**\n**dynamic**\n**functions**\n<size:10>CHECK_UBC_NO_DYN</size>" as CHECK_UBC_NO_DYN [[../tools/ubc/restrictions.html#CHECK_UBC_NO_DYN]] #Orange
rectangle "<size:12>Restriction</size>\n**Do not use**\n**list2needs**\n<size:10>CHECK_UBC_NO_LIST2NEEDS</size>" as CHECK_UBC_NO_LIST2NEEDS [[../tools/ubc/restrictions.html#CHECK_UBC_NO_LIST2NEEDS]] #Orange
rectangle "<size:12>Restriction</size>\n**Do not**\n**use/reference**\n**rst files**\n**outside the**\n**ubproject**\n**workspace/scope**\n<size:10>CHECK_UBC_RST_WORKSPACE</size>" as CHECK_UBC_RST_WORKSPACE [[../tools/ubc/restrictions.html#CHECK_UBC_RST_WORKSPACE]] #Orange

' Connection definition 

FE_UBC_LINTING -[#333333]-> TOOL_UBC
FE_UBC_FORMAT -[#333333]-> TOOL_UBC
FE_UBC_CACHE -[#333333]-> TOOL_UBC
FE_UBC_BUILD_JSON -[thickness=1,#0000AA]-> ART_UBC_NEEDS_JSON
FE_UBC_BUILD_JSON -[#333333]-> TOOL_UBC
FE_UBC_VALIDATE_JSON <-[thickness=1,#00AA00]- ART_UBC_NEEDS_JSON
FE_UBC_VALIDATE_JSON -[#333333]-> TOOL_UBC
FE_UBC_SCHEMA_VALIDATE <-[thickness=1,#00AA00]- ART_UBC_NEEDS_JSON
FE_UBC_SCHEMA_VALIDATE -[#333333]-> TOOL_UBC
FE_UBC_DIFF_GIT -[#333333]-> TOOL_UBC
FE_UBC_AGENT_SKILL -[thickness=1,#0000AA]-> ART_UBC_NEEDS_JSON
FE_UBC_AGENT_SKILL -[#333333]-> TOOL_UBC
CHECK_UBC_NO_DYN -[#FA8072]-> ER_UBC_JSON_INCOMPLETE
CHECK_UBC_NO_LIST2NEEDS -[#FA8072]-> ER_UBC_JSON_INCOMPLETE
CHECK_UBC_RST_WORKSPACE -[#FA8072]-> ER_UBC_JSON_INCOMPLETE

@enduml

ID

Title

Type

ART_UBC_NEEDS_JSON

ubc needs.json file

artifact

CHECK_UBC_NO_DYN

Do not use dynamic functions

restriction

CHECK_UBC_NO_LIST2NEEDS

Do not use list2needs

restriction

CHECK_UBC_RST_WORKSPACE

Do not use/reference rst files outside the ubproject workspace/scope

restriction

ER_UBC_AGENT_SKILL_STALE

Skill out of sync with qualified configuration

fault

ER_UBC_DIFF_DEPTH_CUT

Impact depth truncates the graph

fault

ER_UBC_DIFF_DIR_WRONG

Wrong direction omits incoming impact

fault

ER_UBC_DIFF_DIRTY

Uncommitted local edits not covered

fault

ER_UBC_FORMAT_ERRORS

Format introduces errors

fault

ER_UBC_JSON_INCOMPLETE

Incomplete data

fault

ER_UBC_LINTING_NOT_COVERED

Not covered format

fault

ER_UBC_SCHEMA_DIVERGE

Schema rule set diverges from Sphinx-Needs

fault

ER_UBC_SCHEMA_EXIT_ZERO

Safety violation reported only as warning

fault

ER_UBC_SCHEMA_NO_RULES

Schema rules not loaded

fault

ER_UBC_VAL_FORMAT

Unknown file format

fault

ER_UBC_VAL_INCOMPLETE

Incomplete Validation

fault

FE_UBC_AGENT_SKILL

Generate AI-agent skill for the project (``ubc agent-skill``)

feature

FE_UBC_BUILD_JSON

Build needs.json

feature

FE_UBC_CACHE

Clean internal caches

feature

FE_UBC_DIFF_GIT

Impact analysis on git changes (``ubc diff git``)

feature

FE_UBC_FORMAT

Format rst files

feature

FE_UBC_LINTING

Check rst files for linting problems

feature

FE_UBC_SCHEMA_VALIDATE

Validate ontology schema (``ubc schema validate``)

feature

FE_UBC_VALIDATE_JSON

Validate needs.json

feature

TOOL_UBC

ubc

tool

../../_images/need_pie_929d8.svg
✅ Compliance statistics

Features without faults: 1 / 8

Faults without a mitigation: 11 / 12

Restrictions without fault: 0 / 3

Checks without fault: 0 / 0