SattLint
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 tosattlint
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
.slprojin the current directory. - Use File → Open Configuration to load an existing
.slproj. - Project settings merge over
~/.config/sattlint/config.tomldefaults.
Prefer a .slproj project file over editing ~/.config/sattlint/config.toml
directly.
When SattLint analyzes a target, all SattLine discovery, dependency resolution,
and parsing run in sattline-parser's project layer (SattLineProject.load);
SattLint then re-validates and re-indexes the result into its ProjectGraph
analysis index before running analyzers.
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
-
Start SattLint with
sattlint -
Use File → Open Configuration or File → New Configuration to load a project
-
Select Configuration Settings (or press
Ctrl+3) and configure:program_dir— your SattLine program folderABB_lib_dir— shared or ABB librariesother_lib_dirs— any additional librariesanalyzed_programs_and_libraries— what to analyzeicf_dir— directory containing ICF files used for ICF validation
Changes are saved automatically to the configuration file.
-
Select Analyze to run checks
Note: Use names without file extensions (e.g.
MyProgram, notMyProgram.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
.icfconnection files undericf_diragainst 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.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sattlint-2026.9.4.tar.gz | 406.8 kB | With provenance | Details for sattlint-2026.9.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sattlint-2026.9.4-py3-none-any.whl | Python 3 | none | any | Details for sattlint-2026.9.4-py3-none-any.whl |
Total release size: 917.0 kB
Release files / sattlint-2026.9.4.tar.gz
| Download URL | sattlint-2026.9.4.tar.gz |
|---|---|
| Size | 406.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
efb949a1de1defd0d44407e02a70d04244f67bc9e831bfd3a80c7ccda77437bb
|
|
BLAKE2b-256 checksum How to use checksums |
e1de9835be03908e8b514b8706505df4824c3e9538c3c2d838b7c2a5e7648251
|
| 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 23, 2026.
Transparency logRelease files / sattlint-2026.9.4-py3-none-any.whl
| Download URL | sattlint-2026.9.4-py3-none-any.whl |
|---|---|
| Size | 510.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6323355d3778f7ef3600b6c4a94189ab53c5241f7e8f76f11e41426b4ac82762
|
|
BLAKE2b-256 checksum How to use checksums |
6b561fd3b4137b9d58f105d578bbbcc6d8eb965d5ac909f92c0566a42dba88d8
|
| 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 23, 2026.
Transparency logSecurity for sattlint 2026.9.4
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.
Attestation for sattlint-2026.9.4.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 23, 2026.
Transparency logA 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.