{"id":24569,"library":"secscanner2junit","title":"SecScanner2JUnit","description":"Command-line tool to convert security scanner output (e.g., Trivy, Grype, OWASP Dependency Check, GitLab SAST) into JUnit XML format, enabling integration with CI/CD pipelines. Current version 1.1.0, supports Python >=3.10, released irregularly.","status":"active","version":"1.1.0","language":"python","source_language":"en","source_url":"https://github.com/logchange/SecScanner2JUnit","tags":["security","junit","devops","ci-cd","converter"],"install":[{"cmd":"pip install secscanner2junit","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"wrong":"from secscanner2junit import Converter","symbol":"ContainerScanningParser","correct":"from secscanner2junit import ContainerScanningParser"},{"symbol":"MavenDependencyCheckParser","correct":"from secscanner2junit import MavenDependencyCheckParser"},{"symbol":"SastParser","correct":"from secscanner2junit import SastParser"}],"quickstart":{"code":"from secscanner2junit import Converter\nimport json\n\n# Example: convert Grype JSON to JUnit\nwith open('grype-report.json', 'r') as f:\n    vulns = json.load(f)\nconverter = Converter()\njunit_xml = converter.convert(vulns, scanner='grype')\nwith open('junit-result.xml', 'w') as f:\n    f.write(junit_xml)\nprint('Conversion complete')","lang":"python","description":"Basic usage: instantiate Converter and call convert() with the scanner JSON data and scanner name."},"warnings":[{"fix":"Update imports to `from secscanner2junit import Converter`.","message":"In version 1.0.0, the import path changed from `secscanner2junit.converter` to `secscanner2junit`. Code using the old import will break.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Read the file with `json.load()` or `json.loads()` before passing to `converter.convert()`.","message":"The `convert()` method expects raw JSON data (e.g., parsed dictionary), not a file path. Passing a file path will produce silent failures.","severity":"gotcha","affected_versions":"all"},{"fix":"Pin your version to 1.1.0 if relying on this feature, and monitor for breaking changes.","message":"OWASP Dependency Check format conversion in v1.1.0 is experimental. The method signature may change in future releases.","severity":"deprecated","affected_versions":"1.1.0"}],"env_vars":null,"search_vec":"'1.1.0':30 '3.10':33 'cd':41 'check':16 'ci':40 'ci-cd':39 'ci/cd':26 'command':3 'command-lin':2 'convert':7,42 'current':28 'depend':15 'devop':38 'e.g':11 'enabl':23 'format':22 'gitlab':17 'grype':13 'integr':24 'irregular':35 'junit':20,37 'line':4 'output':10 'owasp':14 'pipelin':27 'python':32 'releas':34 'sast':18 'scanner':9 'secscanner2junit':1 'secur':8,36 'support':31 'tool':5 'trivi':12 'version':29 'xml':21","created_at":"2026-05-01T08:13:46.736241+00:00","updated_at":"2026-05-01T08:13:46.736241+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"1.1.0","cli_name":"secscanner2junit","cli_version":"sh: 1: secscanner2junit: not found","type":"library","homepage":null,"github":"https://github.com/logchange/SecScanner2JUnit","docs":null,"changelog":null,"pypi":"https://pypi.org/project/secscanner2junit/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops","serialization"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-08-02","install_tag":null}}