OWASP/cornucopia

View on GitHub

Showing 8 of 8 total issues

File convert.py has 826 lines of code (exceeds 250 allowed). Consider refactoring.
Open

#!/usr/bin/env python3
import argparse
import docx2pdf  # type: ignore
import docx  # type: ignore
import fnmatch
Severity: Major
Found in scripts/convert.py - About 1 day to fix

    Function produce_webapp_mappings has a Cognitive Complexity of 22 (exceeds 5 allowed). Consider refactoring.
    Open

    def produce_webapp_mappings(source_file: Dict[Any, Any], standards_to_add: list[str]) -> Dict[Any, Any]:
        base = {
            "meta": {"edition": "webapp", "component": "mappings", "language": "ALL", "version": CORNUCOPIA_VERSION},
        }
        for indx, suit in enumerate(source_file.copy()["suits"]):
    Severity: Minor
    Found in scripts/gen_mappings.py - About 3 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Consider simplifying this complex logical expression.
    Open

                if data_type in ("translation", "translations") and (
                    (data["meta"]["language"].lower() == language)
                    or (data["meta"]["language"].lower() == "en" and language == "template")
                ):
                    logging.debug(" --- found source language file: " + os.path.split(file)[1])
    Severity: Major
    Found in scripts/convert.py - About 1 hr to fix

      Avoid deeply nested control flow statements.
      Open

                          for version in get_valid_version_choices():
                              convert_type_language_style(file_type, language, style, version, edition)
      
      
      Severity: Major
      Found in scripts/convert.py - About 45 mins to fix

        Avoid deeply nested control flow statements.
        Open

                            for link in cre_object.get("links"):
                                if link.get("document").get("name") == standard:
                                    source_file["suits"][indx]["cards"][card_indx][standard] = link.get("document").get(
                                        "sectionID"
                                    )
        Severity: Major
        Found in scripts/gen_mappings.py - About 45 mins to fix

          Avoid deeply nested control flow statements.
          Open

                                  if mappings:
                                      data[text1.replace(", ", ",")] = full_tag
                                      text1 = check_make_list_into_text(text_output, True)
                                      data[text1] = full_tag
                              else:
          Severity: Major
          Found in scripts/convert.py - About 45 mins to fix

            Function convert_type_language_style has 5 arguments (exceeds 4 allowed). Consider refactoring.
            Open

            def convert_type_language_style(
            Severity: Minor
            Found in scripts/convert.py - About 35 mins to fix

              Function get_replacement_data has 5 arguments (exceeds 4 allowed). Consider refactoring.
              Open

              def get_replacement_data(
              Severity: Minor
              Found in scripts/convert.py - About 35 mins to fix
                Severity
                Category
                Status
                Source
                Language