src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Security/Checks/__init__.py

Wed, 13 Jul 2022 14:55:47 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 13 Jul 2022 14:55:47 +0200
branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9274
86fab0c74430
permissions
-rw-r--r--

Reformatted the source code using the 'Black' utility.

# -*- coding: utf-8 -*-

# Copyright (c) 2020 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Package containing the various security checker modules.
"""

import collections
import os


def generateCheckersDict():
    """
    Function to generate the dictionary with checkers.

    Checker modules are searched for inside this package. Each module
    defining some checks must contain a function 'getChecks()' returning
    a dictionary containing the check type as key and a list of tuples
    with the check function and associated message codes.

    @return dictionary containing list of tuples with checker data
    @rtype dict
    """
    checkersDict = collections.defaultdict(list)

    checkersDirectory = os.path.dirname(__file__)
    checkerModules = [
        os.path.splitext(m)[0]
        for m in os.listdir(checkersDirectory)
        if m != "__init__.py" and m.endswith(".py")
    ]

    for checkerModule in checkerModules:
        modName = "Security.Checks.{0}".format(checkerModule)
        try:
            mod = __import__(modName)
            components = modName.split(".")
            for comp in components[1:]:
                mod = getattr(mod, comp)
        except ImportError:
            continue

        if not hasattr(mod, "getChecks"):
            continue

        modCheckersDict = mod.getChecks()
        for checktype, checks in modCheckersDict.items():
            checkersDict[checktype].extend(checks)

    return checkersDict

eric ide

mercurial