Inspiration
QNX 8.0 porting knowledge is scattered across platform documentation, build recipes, and hundreds of compatibility patches. The same issues recur: missing macros, APIs declared in different headers, separate link libraries, and build scripts that only recognize Linux, macOS, or Windows. QNXScout brings that knowledge into the first source review, before the repeated compile–fix–rebuild cycle.
What it does
QNXScout is a working Python host tool for C/C++ software targeting QNX SDP 8.0. Run qnxscout scan <directory-or-archive> on Windows, Linux, or macOS. It reports source locations, why a compatibility issue matters, a suggested fix, and links to QNX documentation or historical QNX port patches.
Its 69 evidence-backed rules cover source code, preprocessor branches, CMake, Meson, Autotools, and Makefiles. Findings distinguish blockers, runtime pitfalls, link fixes, review items, and information. Reports are available as text, HTML, Markdown, JSON, and SARIF. A composite GitHub Action supports code-scanning workflows and optional CI gating. An optional --sdp check reads installed SDP headers and ELF exports. Grades A–E are effort heuristics, not build certificates.
How it was built
The implementation uses a position-preserving lexer, three-valued preprocessor evaluation under a QNX 8.0 target model, project macro inference, and build-system condition analysis. A knowledge base cites QNX documentation and QNX port patches. A bundled function index records header and library names from the public QNX 8.0 C Library Reference. Runtime installation needs only Python 3.9+; there are no third-party runtime dependencies.
The recovered project and Git history were preserved. During the submission period, the release was independently installed and tested on Windows, a missing-path bug was fixed so invalid input cannot produce a misleading Grade A, GitHub Action input handling was hardened, Windows CI coverage was added, benchmark claims were clarified, sample reports were regenerated, and a narrated demonstration was produced.
Demonstration and validation
The video records an actual installed CLI scan on Windows against the pristine tmux 3.7c release archive. It identifies SA_RESTART at client.c:561, explains that QNX does not define the macro, and presents the historical compatibility fix and evidence links. The recording console displays real process output; it is capture equipment, not a shipped web interface. Tmux informed rule development, so this is a worked example rather than a held-out accuracy test.
The automated suite runs 31 tests: on Windows, 30 passed and one Linux host-libc test was skipped. A fresh virtual-environment installation and HTML/terminal report generation succeeded.
The saved benchmark covers 609 pristine-source package scans. Same-rule matches cover 155 of 211 identified, rule-mappable historical issues (73.5%) in 135 packages. This denominator is not every modification engineers made. Labels use the rule vocabulary and some evaluated ports informed development; the result is retrospective, not independent held-out or prospective validation. The full historical benchmark was not rerun for this release.
A separate fresh libhydrogen scan outside the saved benchmark was manually reviewed. Several conditional platform warnings had generic Unix fallbacks and should not be treated as confirmed defects. That review is documented openly in docs/RELEASE_VERIFICATION.md.
Challenges and lessons
The hard part is reducing misleading findings. Unknown build options, feature-test macros, platform-specific files, and fallback implementations make naive text matching unreliable. Three-valued evaluation helps, but manual review and actual target builds remain essential. The unfamiliar-project review reinforced the value of showing confidence, evidence, and limitations alongside every finding.
Evidence of QNX use
This entry is a host-based developer tool supporting software targeting QNX 8.0. Reviewers can verify the connection in:
qnxscout/kb.py: QNX target macros and evidence-backed compatibility rules.qnxscout/preproc.pyandppexpr.py: QNX-target preprocessor evaluation.qnxscout/buildsys.py: QNX CMake and Meson condition analysis.qnxscout/data/qnx80_libc_index.json: QNX 8.0 header/library index.qnxscout/sdp.py: optional SDP header and ELF verification.examples/reports/tmux-report.html: reproducible QNX-specific findings.
No executed QNX target build or real installed-SDP verification is claimed for this release. Synthetic SDP tests are not a substitute for either.
Build and run
Target model: QNX SDP 8.0 / QNX Everywhere. Host: Windows, macOS, or Linux with Python 3.9+. No QNX compiler or hardware is needed for the static host scan.
git clone https://github.com/coledemole52/qnxscout.git
cd qnxscout
python -m pip install .
python -m unittest discover -s tests -v
qnxscout scan path/to/project
qnxscout scan path/to/project -f html -o report.html
Tutorial bonus entry
The linked QNX 8.0 codelab walks through scanning tmux, interpreting findings, and preparing fixes. It includes optional abuild instructions for a QNX Developer Desktop target on QEMU or Raspberry Pi. Those optional target-build steps have not been executed for this release.
https://github.com/coledemole52/qnxscout/blob/main/docs/codelab/qnxscout-port-readiness.md
What's next
Validate against real installed SDPs and QNX targets, reduce conservative platform warnings using unfamiliar projects, and evaluate future ports with labels established independently of the rule set.
Source is public under Apache-2.0. QNXScout is an independent project, not affiliated with or endorsed by BlackBerry/QNX.
Log in or sign up for Devpost to join the conversation.