From cadd5b6c1a6b30b89900c86abe0ef6e6e7f75859 Mon Sep 17 00:00:00 2001 From: anthonyharrison Date: Mon, 12 Aug 2024 20:35:36 +0100 Subject: [PATCH] fix: list of available language parsers (fixes #4334) (#4336) * fixes #4334 * fixes #4328 --- cve_bin_tool/parsers/parse.py | 13 +++++++++++++ cve_bin_tool/version_scanner.py | 5 ++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/cve_bin_tool/parsers/parse.py b/cve_bin_tool/parsers/parse.py index d342d8c510..91d7b99ced 100644 --- a/cve_bin_tool/parsers/parse.py +++ b/cve_bin_tool/parsers/parse.py @@ -75,6 +75,19 @@ def load_valid_files() -> dict[str, list[type[Parser]]]: valid_files = load_valid_files() +def identify_parsers() -> list: + """Reports names of parsers""" + parsers = [] + for i in BUILTIN_PARSERS.items(): + parser = i[0].split(".")[0] + if parser not in parsers: + parsers.append(parser) + return parsers + + +available_parsers = identify_parsers() + + def parse(filename, output, cve_db, logger): """ Parses the given filename using the appropriate parser. diff --git a/cve_bin_tool/version_scanner.py b/cve_bin_tool/version_scanner.py index 720e6e0962..f889c6eb7f 100644 --- a/cve_bin_tool/version_scanner.py +++ b/cve_bin_tool/version_scanner.py @@ -2,7 +2,6 @@ # SPDX-License-Identifier: GPL-3.0-or-later from __future__ import annotations -import itertools import subprocess import sys from logging import Logger @@ -16,7 +15,7 @@ from cve_bin_tool.extractor import Extractor, TempDirExtractorContext from cve_bin_tool.file import is_binary from cve_bin_tool.log import LOGGER -from cve_bin_tool.parsers.parse import parse, valid_files +from cve_bin_tool.parsers.parse import available_parsers, parse, valid_files from cve_bin_tool.strings import parse_strings from cve_bin_tool.util import ( DirWalk, @@ -137,7 +136,7 @@ def number_of_checkers(self) -> int: @classmethod def available_language_checkers(cls) -> list[str]: """Find Language checkers""" - return list(sorted(map(str, set(itertools.chain(*valid_files.values()))))) + return sorted(available_parsers) def print_language_checkers(self) -> None: """Logs the message that lists the names of the language checkers"""