Skip to main content

Introduction

iec-checker is an open-source static analyzer for IEC 61131-3 programs. It catches bugs and PLCOpen guideline violations in Structured Text before the program ever reaches the PLC.

It highlights potential issues and guideline violations in your code:

iec-checker output

Supported languages and formats

iec-checker analyzes Structured Text with the language extensions accepted by the matiec compiler.

Supported input formats:

  • Plain ST source code
  • PLCOpen XML
  • SEL XML (Schweitzer Engineering Laboratories vendor format)

If iec-checker does not support Structured Text extensions from your PLC vendor, please open an issue — adding new dialects is usually a small parser change.

Alternatively, if you're looking for support of more languages, new detectors, or your vendor's extensions as first-class citizens, you may consider sponsor development.

What it checks

iec-checker ships with 27 built-in detectors out of the box: 25 PLCOpen Guideline checks covering naming, initialization, complexity, recursion, floating-point comparison, and type conversion, plus 2 general correctness checks for out-of-bounds access and unused variables.

It also performs declaration analysis for derived types and intraprocedural control-flow analysis to find unreachable code.

See the Detectors overview for the full list.

Output

iec-checker emits warnings in either human-readable plain text or JSON for tool integration. It can also dump the parsed IR as JSON via --dump, which Python plugins can consume.

Next steps