Skip to main content

SattLint

OpenSSF Scorecard

SattLint is a Python toolkit for SattLine projects. It provides configurable static analysis, ICF validation, graphics-rule analysis, and an interactive terminal UI.


What SattLint Does

  • Check whether a SattLine file parses correctly
  • Analyze a full program or library together with its dependencies
  • Find issues such as unused variables, written-but-never-read variables, and shadowing
  • Validate ICF configuration files and graphics companion files

Requirements

  • Windows or Linux
  • Python 3.13 or newer
  • A local copy of your SattLine code

Installation

1. Install SattLint

Install the released package with pip.

Linux

python3 -m pip install --user sattlint

Windows

py -m pip install --user sattlint

This installs the sattlint command for your user account.

2. Verify

sattlint

From source (for development)

To run the latest code from the repository instead of the released package:

git clone https://github.com/SorenHJohansen/SattLint.git
cd SattLint
python3 -m pip install --user .

Quick Start

Start the interactive terminal UI:

sattlint

Open a configuration first (File → Open Configuration or File → New Configuration), then use the Analyze view to pick analyzers and run checks.

sattlint takes no arguments; all CLI subcommands and flags have been removed and every capability is reachable from the Textual UI. Supplying arguments returns a usage error (exit code 2).

Exit codes:

  • 0 — success (the TUI launched and quit cleanly)
  • 2 — arguments were supplied to sattlint

Interactive Shell

sattlint

Opens the Textual interactive terminal UI. The app starts with no configuration loaded; use File → Open Configuration or File → New Configuration to load or create a project.

Views (switch with Ctrl+1…Ctrl+5 or the tabs at the top):

  • Analyze — select analyzers to run and start checks
  • Results — browse and inspect previous analysis runs
  • Configuration Settings — set directories, targets, and mode
  • App Settings — run history, logging, and Change Review output
  • Output — generate Change Review artifacts

The File menu also offers Help (first-run guidance and keyboard shortcuts) and Quit.


Project Files (.slproj)

A .slproj project file captures all analysis settings in a single checked-in file: targets, directories, mode, and output/cache paths. Paths inside a .slproj are relative to the file itself, so projects are portable across machines.

  • Use File → New Configuration in the UI to scaffold a new .slproj in the current directory.
  • Use File → Open Configuration to load an existing .slproj.
  • Project settings merge over ~/.config/sattlint/config.toml defaults.

Prefer a .slproj project file over editing ~/.config/sattlint/config.toml directly.


First-Time Setup

The first time SattLint runs, it creates a config file automatically:

  • Windows: %APPDATA%\sattlint\config.toml
  • Linux: ~/.config/sattlint/config.toml

For a portable, checked-in setup, create a .slproj project file from the UI's File → New Configuration action instead; project settings merge over these config defaults (see Project Files).

Configuration

  1. Start SattLint with sattlint

  2. Use File → Open Configuration or File → New Configuration to load a project

  3. Select Configuration Settings (or press Ctrl+3) and configure:

    • program_dir — your SattLine program folder
    • ABB_lib_dir — shared or ABB libraries
    • other_lib_dirs — any additional libraries
    • analyzed_programs_and_libraries — what to analyze
    • icf_dir — directory containing ICF files used for ICF validation

    Changes are saved automatically to the configuration file.

  4. Select Analyze to run checks

Note: Use names without file extensions (e.g. MyProgram, not MyProgram.s).


Updating

Update the released package from PyPI:

python3 -m pip install --user --upgrade sattlint

For a source checkout, reinstall with python3 -m pip install --user ..


Graphics Validation

SattLint validates graphics companion files (.g) automatically whenever it loads a program or library. Graphics issues — invalid bindings, composite-record mismatches, and unresolved picture display paths — are reported alongside the validation output for the affected target.

To dig deeper from the UI:

  • Open Analyze and run PictureDisplay paths to check that every PictureDisplay button path points to a real screen or module.
  • Run ICF configuration to validate the .icf connection files under icf_dir against their referenced programs.

Common Problems

sattlint not found

The sattlint script is not on your PATH. After a pip install --user, scripts are placed in ~/.local/bin on Linux (or %APPDATA%\Python\Python313\Scripts on Windows); add that directory to your PATH and restart your terminal.

Python version error

Install Python 3.13+ and reinstall with python3 -m pip install --user --upgrade sattlint.

Targets not found

  • Names must not include file extensions
  • Paths in config must be correct
  • Mode (official / draft) must match your files

Missing libraries

Add missing folders to ABB_lib_dir or other_lib_dirs.

Results look outdated

Results are cached per configuration. Opening a configuration refreshes the cached ASTs automatically; if results still look stale, re-run the analysis from the Analyze view. Completed runs are kept in the Results view, and App Settings → Run History controls how many runs are retained.


For Developers

See CONTRIBUTING.md for development setup, tests, and tooling.


License

SattLint is released under the MIT License.

Metadata

Release files for sattlint 2026.9.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sattlint 2026.9.3
File Size Uploaded Provenance Actions
sattlint-2026.9.3.tar.gz 411.6 kB With provenance Details for sattlint-2026.9.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for sattlint 2026.9.3
File Interpreter ABI Platform Actions
sattlint-2026.9.3-py3-none-any.whl Python 3 none any Details for sattlint-2026.9.3-py3-none-any.whl

Total release size: 928.1 kB

Release files / sattlint-2026.9.3.tar.gz

Download URL sattlint-2026.9.3.tar.gz
Size 411.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b9e54b8fc5461e096e7aeeae8d00fdd0277e0e0f412add7bb20e141434bd8b60
BLAKE2b-256 checksum
How to use checksums
f08f5cbae62cdf167122840546841526006ca6c2cbcc26cb747c8b6c2496cefd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Release files / sattlint-2026.9.3-py3-none-any.whl

Download URL sattlint-2026.9.3-py3-none-any.whl
Size 516.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8578de14913e0e43fad8adbb76a83986e7a938dcc7ceefc9223b683b9ffb9d99
BLAKE2b-256 checksum
How to use checksums
d794e65a65264ac4504978b6e326b5c340602259df54f9a884eae1e0b739a888
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

Security for sattlint 2026.9.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for sattlint-2026.9.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page