Skip to main content

Comprehensive Ignition linting tool with naming conventions and empirical validation. Extends ia-eknorr/ignition-lint with enhanced features.

Project description

ignition-lint

PyPI Python License: MIT CI

A comprehensive linting toolkit for Ignition SCADA projects. Validates Perspective views, Jython scripts, naming conventions, expressions, and more.

This project extends the foundational work by Eric Knorr in ia-eknorr/ignition-lint, which pioneered naming convention validation for Ignition view.json files. See credits for the full story.

Installation

pip install ignition-lint-toolkit

Or with uv:

uv pip install ignition-lint-toolkit

Verify the install:

ignition-lint --help

Optional: MCP server support

pip install "ignition-lint-toolkit[mcp]"

Quick start

Lint any directory

Point the linter at any directory and it recursively finds view.json and .py files:

ignition-lint --target /path/to/your/project

Lint a full Ignition project

If your directory follows the standard Ignition layout:

ignition-lint --project /path/to/ignition/project --profile full

Pick specific checks

# Only Perspective views
ignition-lint -t /path/to/views --checks perspective

# Only scripts, JSON output for programmatic use
ignition-lint -t /path/to/scripts --checks scripts --report-format json

# Naming conventions only
ignition-lint --project /path/to/project --naming-only

Suppress noisy rules during adoption

ignition-lint -t ./project --ignore-codes NAMING_PARAMETER,MISSING_DOCSTRING,LONG_LINE

What it checks

Category Examples
Perspective schema Component structure, binding types, transform validity, missing props
Expressions now() polling intervals, unknown functions, malformed property refs, fragile component traversal
Naming conventions Component, parameter, and custom property naming (PascalCase, camelCase, snake_case, or custom regex)
Jython inline scripts Syntax errors, indentation, print statements, hardcoded URLs, missing error handling
Standalone scripts Python syntax, docstrings, deprecated APIs, system overrides, line length
Unused properties Unreferenced custom and params properties per view

Severity levels

Level Meaning
ERROR Critical issues that cause runtime failures
WARNING Compatibility or best practice issues
INFO Informational insights and suggestions
STYLE Code style and documentation improvements

Lint suppression

Three mechanisms let you control which rules fire and where:

  1. --ignore-codes flag -- suppress rules globally for an entire run
  2. .ignition-lintignore file -- gitignore-style patterns with optional rule scoping per path
  3. Inline comments -- # ignition-lint: disable=CODE directives in Python scripts

See the suppression guide for the full reference.

Integrations

GitHub Actions

Create .github/workflows/ignition-lint.yml:

name: Ignition Lint
on: [push, pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: whiskeyhouse/ignition-lint@v1
        with:
          files: "**/view.json"
          component_style: "PascalCase"
          parameter_style: "camelCase"

Pre-commit hook

repos:
  - repo: https://github.com/WhiskeyHouse/ignition-lint
    rev: v1
    hooks:
      - id: ignition-perspective-lint

MCP server (AI agents)

ignition-lint-server

Tooling overview

Command Purpose
ignition-lint CLI entry point for project and file linting
ignition-lint-server FastMCP server for AI agent integrations
ignition-lint-action Wrapper used by the GitHub Action

Documentation

Full documentation at WhiskeyHouse.github.io/ignition-lint:

Contributing

Contributions are welcome! See CONTRIBUTING.md for development setup, project structure, and guidelines.

License

MIT © Whiskey House Labs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ignition_lint_toolkit-0.4.0.tar.gz (396.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ignition_lint_toolkit-0.4.0-py3-none-any.whl (60.5 kB view details)

Uploaded Python 3

File details

Details for the file ignition_lint_toolkit-0.4.0.tar.gz.

File metadata

  • Download URL: ignition_lint_toolkit-0.4.0.tar.gz
  • Upload date:
  • Size: 396.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ignition_lint_toolkit-0.4.0.tar.gz
Algorithm Hash digest
SHA256 14c4127457fbb56315044ca9cf7c445b5dd7d8a611865c51503a03c84bb6dc6a
MD5 bdf20e6aaf77a5973abe42c249bcf776
BLAKE2b-256 93928b216c6f1bec87714e5ec116e23f5af94e7ffa438308d30cbc26a4562348

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignition_lint_toolkit-0.4.0.tar.gz:

Publisher: release.yml on WhiskeyHouse/ignition-lint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ignition_lint_toolkit-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ignition_lint_toolkit-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a71b25f9f7a503d1314345226d6357119c7624c22cdcb5b97339f5b24c47d584
MD5 1cc6cc591043086ab669f539d6604c4a
BLAKE2b-256 6b6c608cf0961a682e9cc603b3c67b679da533f9d8dbc16179217362fb538105

See more details on using hashes here.

Provenance

The following attestation bundles were made for ignition_lint_toolkit-0.4.0-py3-none-any.whl:

Publisher: release.yml on WhiskeyHouse/ignition-lint

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page