SARIF Tools

3.0.5 · active · verified Mon Apr 13

sarif-tools is a Python library and command-line interface for working with Static Analysis Results Interchange Format (SARIF) files. It provides utilities for summarizing, comparing, transforming, and extracting information from SARIF reports. The current version is 3.0.5, with an active development cadence focusing on bug fixes and occasional breaking changes in major versions.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to load a SARIF file using `SarifFileSet`, access its issue report via `get_report()`, and then retrieve issues filtered by severity using the v3.0.0+ API. It creates a temporary dummy SARIF file for the example.

import os
import json
from sarif_tools.sarif_file_set import SarifFileSet

# Create a dummy SARIF file for demonstration
dummy_sarif_content = {
    "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0-rtm.5.json",
    "version": "2.1.0",
    "runs": [
        {
            "tool": {
                "driver": {
                    "name": "Dummy Tool"
                }
            },
            "results": [
                {
                    "message": {"text": "A dummy error was found."},
                    "locations": [
                        {
                            "physicalLocation": {
                                "artifactLocation": {"uri": "dummy_code.py"},
                                "region": {"startLine": 1, "startColumn": 1}
                            }
                        }
                    ],
                    "level": "error",
                    "ruleId": "DUMMY001"
                },
                {
                    "message": {"text": "A dummy warning was found."},
                    "locations": [
                        {
                            "physicalLocation": {
                                "artifactLocation": {"uri": "dummy_code.py"},
                                "region": {"startLine": 5, "startColumn": 10}
                            }
                        }
                    ],
                    "level": "warning",
                    "ruleId": "DUMMY002"
                }
            ]
        }
    ]
}

dummy_sarif_path = "dummy_report.sarif"
with open(dummy_sarif_path, "w", encoding="utf-8") as f:
    json.dump(dummy_sarif_content, f, indent=2)

try:
    # Load a SARIF file set
    sarif_set = SarifFileSet(dummy_sarif_path)

    # Get the issue report (introduced in v3.0.0)
    report = sarif_set.get_report()

    # Get issues for a specific severity
    error_issues = report.get_issues_for_severity('error')
    print(f"Found {len(error_issues)} error(s):")
    for issue in error_issues:
        print(f"  - {issue.message} at {issue.location_string}")

    warning_issues = report.get_issues_for_severity('warning')
    print(f"\nFound {len(warning_issues)} warning(s):")
    for issue in warning_issues:
        print(f"  - {issue.message} at {issue.location_string}")

finally:
    # Clean up the dummy file
    if os.path.exists(dummy_sarif_path):
        os.remove(dummy_sarif_path)

view raw JSON →