Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.roboticks.io/llms.txt

Use this file to discover all available pages before exploring further.

LDRA

LDRA Testbed is the long-standing static-analysis and coverage tool for safety-critical C/C++/Ada. Roboticks ingests LDRA’s reports — MISRA, AUTOSAR C++14, JSF AV, and coverage — and surfaces findings in the traceability matrix and evidence pack.
v1 sync mode: CLI push only. LDRA has no live API — the BYO connector adapter walks a local results folder of XML reports. Cloud sync is not technically possible for LDRA.Tool-qualification preservation: every LDRA-sourced evidence row is marked qualified_artifact=true. AI triage skips these rows entirely, and evidence packs store the raw XML byte-exact alongside the canonical view so DO-178C / ISO 26262 auditors can verify integrity.

Connector type and pricing

TypeBYO static-analysis connector
TierTeam (3 BYO connectors included), Enterprise (bundled)
Price$149 / connector / month above the Team allowance
LDRA licenseYou bring it. Roboticks ingests reports; we don’t run LDRA.

What ingests

ArtifactSource commandLands in Roboticks as
MISRA C:2012 reporttbreport.exe --type=misra-c-2012 --format=xmlfinding (rule violations, per-file)
MISRA C++:2008 reporttbreport.exe --type=misra-cpp-2008 --format=xmlfinding
AUTOSAR C++14 reporttbreport.exe --type=autosar-cpp-14 --format=xmlfinding
JSF AV C++ reporttbreport.exe --type=jsf-av --format=xmlfinding
Coverage report (statement / branch / MC/DC)tbreport.exe --type=coverage --format=xmlcoverage (per-source-file)
Static metricstbreport.exe --type=metrics --format=xmlmetric (advisory)
All reports surface in the platform’s Findings view and embed in the per-release evidence pack.

Wire it in (v1 CLI push)

1

Subscribe in Roboticks

Settings → Integrations → Static analysis → LDRA → Subscribe. The wizard walks you through installing rbtk in your CI (LDRA is CLI-push only; no cloud sync step).
2

Run LDRA in CI as usual

tbrun --workspace ./build/ldra.lws --analyze
mkdir -p ./build/ldra-reports/tbmisra/${BUILD_ID}/
tbreport.exe --workspace ./build/ldra.lws --type=misra-c-2012 --format=xml \
  --output=./build/ldra-reports/tbmisra/${BUILD_ID}/report.xml
mkdir -p ./build/ldra-reports/tbvision/${BUILD_ID}/
tbreport.exe --workspace ./build/ldra.lws --type=coverage --format=xml \
  --output=./build/ldra-reports/tbvision/${BUILD_ID}/coverage.xml
The folder layout matters — the adapter walks tbmisra/<run_id>/report.xml and tbvision/<run_id>/coverage.xml patterns.
3

Configure credentials

rbtk connector configure ldra \
    --reports-dir=./build/ldra-reports \
    --qualification-kit-version=2024-Q4-TQSP \
    --tool-version=LDRA-2024-SP2 \
    --label=primary \
    --project-slug=flight-controller
4

Push reports to Roboticks

rbtk connector sync ldra --label=primary
The adapter emits MISRA violations, coverage summaries (statement / branch / MC/DC), and the tool-qualification kit reference as separate evidence rows. All marked qualified_artifact=true; AI triage skips them, evidence packs preserve them byte-exact.Requirement linkage: violation messages containing @confirms REQ-XXX patterns are auto-linked. For finer-grained mapping, use the file-path → requirement table in the Roboticks connector dashboard.

CI recipe

# .github/workflows/ldra.yml
name: LDRA
on: { push: { branches: [main] }, pull_request: {} }

jobs:
  ldra:
    runs-on: [self-hosted, ldra-licensed]   # LDRA licenses are per-machine
    permissions: { id-token: write, contents: read }
    steps:
      - uses: actions/checkout@v4

      - name: Run LDRA
        run: |
          tbrun --workspace ./build/ldra.lws --analyze
          tbreport.exe --workspace ./build/ldra.lws \
            --type=misra-c-2012 --format=xml --output=ldra-misra.xml
          tbreport.exe --workspace ./build/ldra.lws \
            --type=coverage --format=xml --output=ldra-coverage.xml

      - run: pipx install roboticks-cli
      - run: rbtk auth oidc-from-github

      - name: Upload findings
        run: |
          rbtk findings upload \
            --tool ldra \
            --label branch=${{ github.ref_name }} \
            ldra-misra.xml ldra-coverage.xml
self-hosted, ldra-licensed is a GitHub Actions runner label — only machines with an LDRA license accept the job. In Roboticks, mirror this with a runner pool label so corresponding test runs pick the same hosts:
# .roboticks/test.yaml
requires:
  pool_labels: [ldra-licensed]

Where findings appear

After upload:
  • Traceability matrix — findings tied to source files annotated with @confirms("REQ-...") link to the matching requirement column. The cell shows a finding badge.
  • Requirement detailREQ-001 view lists associated findings under Static analysis findings (LDRA).
  • Release evidence pack — per-release packs include an LDRA Findings appendix (PDF) and the raw LDRA XML reports in the ZIP.
  • PR Check Run — a Roboticks · LDRA Check Run shows a delta vs the prior PR (new findings, resolved findings).

Severity mapping

LDRA classificationRoboticks severity
Mandatorycritical
Requirederror
Advisorywarning
Disappliedsuppressed
Configure per-project at Settings → Findings → Severity mapping.

Deviations

LDRA supports formal deviation records for justified rule violations. Roboticks ingests them from the LDRA --type=deviations report and surfaces them in the finding’s detail view. Deviations marked Approved in LDRA suppress the corresponding finding from gating logic; they remain visible.
tbreport.exe --workspace ./build/ldra.lws \
  --type=deviations --format=xml --output=ldra-deviations.xml

rbtk findings upload --tool ldra ldra-deviations.xml

Gating

You can fail a PR Check Run if new LDRA findings exceed a threshold:
# .roboticks/findings-policy.yaml
ldra:
  block_pr_if:
    new_critical: > 0
    new_error:    > 5
    coverage_loss: > 2.0%   # delta in branch coverage vs base ref
The Roboticks Check Run reports the result; combine with GitHub’s required-status-check setting if you want a hard merge block.

Troubleshooting

Roboticks targets the XML format from LDRA Testbed 9.7+. Older versions emit HTML — upgrade LDRA or post-process with xsltproc.
LDRA licenses are typically host-locked. If tbrun fails on license, no findings are produced — the CI job fails, and the previous run’s findings remain authoritative in Roboticks.

Next

Polyspace

MathWorks Code Prover and Bug Finder.

OSS scanners

cppcheck and clang-tidy ship bundled.