Skip to content

PLC Lint action v1 — check PLCopenXML exports in CI

Choose a tag to compare

@caspershes caspershes released this 24 Aug 16:09
· 16 commits to main since this release

Runs the PLC Lint analyzer on your PLCopenXML exports (CODESYS, TwinCAT) as part of a
GitHub workflow. The analysis happens on the runner: no network calls, nothing uploaded,
standard library only.

- uses: actions/checkout@v4
- uses: caspershes/plc-lint@v1
  with:
    path: exports/     # files, globs or a directory
    fail-on: high      # break the build on high-severity findings

Results appear on the job summary as a table — score, POU count and findings per export.
High-severity findings become annotations, and fail-on decides whether the step fails.

Inputs: path, fail-on, profile (heating, plcopen-naming), lang (en/ru),
html, summary, annotations, python-version.

Outputs: score, high, medium, low, files, json — so you can gate on the
score instead of severity:

- id: lint
  uses: caspershes/plc-lint@v1
  with: { path: exports/, fail-on: none }
- run: test "${{ steps.lint.outputs.score }}" -ge 70

34 rules: uncalled timers, divide-by-zero, setpoint truncation, unreachable branches,
disabled watchdogs, copy-paste errors between control loops, plus hygiene checks.
Full reference in RULES.md, a known-bad example project in examples/.

The engine is MIT licensed and also runs as a standalone tool — python cli.py project.xml,
or a single .exe on Windows.