Comprehensive Ignition linting tool with naming conventions and empirical validation. Extends ia-eknorr/ignition-lint with enhanced features.
Project description
ignition-lint
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:
--ignore-codesflag -- suppress rules globally for an entire run.ignition-lintignorefile -- gitignore-style patterns with optional rule scoping per path- Inline comments --
# ignition-lint: disable=CODEdirectives 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14c4127457fbb56315044ca9cf7c445b5dd7d8a611865c51503a03c84bb6dc6a
|
|
| MD5 |
bdf20e6aaf77a5973abe42c249bcf776
|
|
| BLAKE2b-256 |
93928b216c6f1bec87714e5ec116e23f5af94e7ffa438308d30cbc26a4562348
|
Provenance
The following attestation bundles were made for ignition_lint_toolkit-0.4.0.tar.gz:
Publisher:
release.yml on WhiskeyHouse/ignition-lint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ignition_lint_toolkit-0.4.0.tar.gz -
Subject digest:
14c4127457fbb56315044ca9cf7c445b5dd7d8a611865c51503a03c84bb6dc6a - Sigstore transparency entry: 953204807
- Sigstore integration time:
-
Permalink:
WhiskeyHouse/ignition-lint@53b4466b8aa24bfc1ceb1d9192cb3fee99364229 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/WhiskeyHouse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@53b4466b8aa24bfc1ceb1d9192cb3fee99364229 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ignition_lint_toolkit-0.4.0-py3-none-any.whl.
File metadata
- Download URL: ignition_lint_toolkit-0.4.0-py3-none-any.whl
- Upload date:
- Size: 60.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a71b25f9f7a503d1314345226d6357119c7624c22cdcb5b97339f5b24c47d584
|
|
| MD5 |
1cc6cc591043086ab669f539d6604c4a
|
|
| BLAKE2b-256 |
6b6c608cf0961a682e9cc603b3c67b679da533f9d8dbc16179217362fb538105
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ignition_lint_toolkit-0.4.0-py3-none-any.whl -
Subject digest:
a71b25f9f7a503d1314345226d6357119c7624c22cdcb5b97339f5b24c47d584 - Sigstore transparency entry: 953204808
- Sigstore integration time:
-
Permalink:
WhiskeyHouse/ignition-lint@53b4466b8aa24bfc1ceb1d9192cb3fee99364229 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/WhiskeyHouse
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@53b4466b8aa24bfc1ceb1d9192cb3fee99364229 -
Trigger Event:
push
-
Statement type: