secscanner2junit
Convert Security Scanner Output to JUnit Format
What it is and what it does
SecScanner2JUnit is a command-line tool that bridges GitLab's free-tier security scanning gap by converting native security scanner output into JUnit XML format. GitLab's free tier runs security scans (SAST, secret detection, container scanning, infrastructure-as-code scanning) but only displays results in merge requests on the Ultimate tier; this tool lets you work around that limitation by converting the JSON reports to JUnit format and uploading them as test reports, which GitLab displays in merge requests regardless of tier.
The tool accepts four report types (sast, secrets, container_scanning, maven_dependency_check), reads the JSON output from GitLab's security templates, and writes JUnit XML. It also supports suppression rules via a YAML config file to filter out known or accepted vulnerabilities. It's designed for GitLab CI/CD pipelines and is available both as a pip package and a Docker image.
Use it for:
- Display SAST findings in GitLab merge requests on free tier by converting semgrep or brakeman reports to JUnit.
- Surface secret detection results in merge requests without upgrading to Ultimate tier.
- Aggregate container scanning vulnerabilities as JUnit reports in CI/CD pipelines.
- Suppress known vulnerabilities from security reports using a config file before conversion.
- Run security scanning in Docker-based CI without pip by using the logchange/secscanner2junit image.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Converts GitLab security scanner output (SAST, secrets, container scanning, dependency checks) to JUnit XML format for display in merge requests on the free tier.
Yes, if you use GitLab's free tier and want security scan results visible in merge requests. The tool is actively maintained, has low install friction, and solves a specific GitLab limitation. GPLv3 copyleft is standard for security tooling and poses no barrier for internal use. No known vulnerabilities.
Install
secscanner2junit on PyPI
pip
pip install secscanner2junituv
uv add secscanner2junitpoetry
poetry add secscanner2junitInstalling secscanner2junit
Before you install
Low friction: pure Python wheel with four common runtime dependencies (junit-xml, PyYAML, pytest, setuptools). Active maintenance with recent commits; last release 2025-02-08.
License in practice
GPLv3 copyleft license; you may use and modify the package freely, but any derivative work or distribution must also be licensed under GPLv3.
Quickstart
pip install SecScanner2JUnit
ss2ju secrets gl-secret-detection-report.json gl-secret-detection-report.xml
Requires Python 3.10 or later; input JSON must be a valid GitLab security scanner report.
Verify before relying
- Whether the tool handles all edge cases in GitLab's security report schema across different scanner versions.
- Performance characteristics when processing large security reports.
Package facts
| License | GPL-3.0-only (copyleft) |
| Python support | supports the current Python release (<4.0,>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — junit-xml, PyYAML, pytest, setuptools |
| Maintenance | actively maintained — 552 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 116,452/month — #12,203 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: secscanner2junit-1.1.0-py3-none-any.whl
Tags
More Quality Assurance packages
Coverage.py measures which lines of Python code…
permissive · top 1,000 on PyPI
ruffRuff is a Python linter and code formatter…
permissive · top 1,000 on PyPI
pexpectPexpect spawns and controls interactive console…
permissive · top 1,000 on PyPI
blackBlack reformats Python source code to a…
permissive · top 1,000 on PyPI
pytest-xdistpytest-xdist distributes pytest tests across…
permissive · top 1,000 on PyPI
cfn-lintValidates AWS CloudFormation templates in YAML…
permissive · top 1,000 on PyPI
njsscannjsscan is a static application security…
copyleft · top 15,000 on PyPI
mypy-gitlab-code-qualityConverts mypy type-checking output into GitLab…
permissive · top 15,000 on PyPI
junit2htmlConverts JUnit or XUnit XML test result files…
permissive · top 5,000 on PyPI
pylint-gitlabProvides custom pylint output formatters that…
copyleft · top 5,000 on PyPI
junit-xml-2Generates JUnit XML test result reports from…
permissive · top 15,000 on PyPI
junitparserParse, create, and manipulate JUnit/xUnit test…
permissive · top 5,000 on PyPI
semgrepSemgrep is a static analysis tool that searches…
copyleft · top 1,000 on PyPI
kingfisher-binKingfisher is a command-line secret scanner…
permissive · top 15,000 on PyPI
flake8-formatter-junit-xmlFormats flake8 linting output as JUnit XML,…
permissive · top 15,000 on PyPI
pylint-junitGenerates JUnit-formatted XML reports from…
permissive · top 15,000 on PyPI