Category: Developer Tooling & Host Tools (also entering Best Codelab / Tutorial with CODELAB.md)

What it does

ifslint reads QNX SDP 8.0 mkifs buildfiles and reports mistakes with exact line/column, a code, and a fix hint: unknown or misspelled attributes ("did you mean perms?"), invalid permission modes / uid / mtime / sha256 values, attributes split across bracket groups or with spaces around "=", duplicate image paths after the proc/boot prefix, inline files with content on the brace line or never closed, a bootstrap section that doesn't start with startup-* and end with procnto, +optional on bootstrap executables, and startup-script lines that use shell features script files don't support (pipes, redirection, loops, subshells, wildcards) or run programs that aren't in the image. --tree prints the resulting image layout; --json and exit codes make it CI-ready. A VS Code extension shows the same diagnostics live as you type.

How it uses QNX

Every rule implements a statement from the QNX SDP 8.0 mkifs Utilities Reference and the Buildfile syntax chapter of Building Embedded Systems (each rule's source is listed in the README). It targets the host-side QNX development workflow: Linux, macOS or Windows hosts, and BSP repositories in CI.

How we built it

TypeScript, zero runtime dependencies: a buildfile parser that tracks sticky vs. per-file attributes, inline file bodies and exact source ranges, plus a rule engine with 20 unit tests. The VS Code extension reuses the same engine.

Where to look: src/parser.ts (grammar), src/rules.ts (rules and their doc sources), src/tree.ts (image tree), examples/broken.build (every rule triggered), test/rules.test.js. Run: npm install && npm run build && node dist/cli.js examples/broken.build Built with: typescript, node.js, vscode-extension-api

Demo

The demo video shows the real CLI output on examples/broken.build and examples/good.build. A step-by-step codelab is in CODELAB.md.

Built with AI assistance (Claude); every rule was checked against the QNX SDP 8.0 documentation.

Built With

Share this project:

Updates

Submission history