示例#1
0
    def visit_FunctionDef(self, node):
        """Visitor for AST FunctionDef nodes

        add relevant information about the node to
        the context for use in tests which inspect function definitions.
        Add the function name to the current namespace for all descendants.
        :param node: The node that is being inspected
        :return: -
        """

        self.context["function"] = node

        if self.debug:
            logger.debug("visit_FunctionDef called (%s)", ast.dump(node))

        qualname = self.namespace + "." + b_utils.get_func_name(node)
        name = qualname.split(".")[-1]

        self.context["qualname"] = qualname
        self.context["name"] = name

        # For all child nodes and any tests run, add this function name to
        # current namespace
        self.namespace = b_utils.namespace_path_join(self.namespace, name)
        self.update_scores(self.tester.run_tests(self.context, "FunctionDef"))
        self.generic_visit(node)
        self.namespace = b_utils.namespace_path_split(self.namespace)[0]
示例#2
0
    def visit_FunctionDef(self, node):
        '''Visitor for AST FunctionDef nodes

        add relevant information about the node to
        the context for use in tests which inspect function definitions.
        Add the function name to the current namespace for all descendants.
        :param node: The node that is being inspected
        :return: -
        '''

        self.context['function'] = node

        if self.debug:
            self.logger.debug("visit_FunctionDef called (%s)", ast.dump(node))

        qualname = self.namespace + '.' + b_utils.get_func_name(node)
        name = qualname.split('.')[-1]

        self.context['qualname'] = qualname
        self.context['name'] = name

        # For all child nodes and any tests run, add this function name to
        # current namespace
        self.namespace = b_utils.namespace_path_join(self.namespace, name)
        self.update_scores(self.tester.run_tests(self.context, 'FunctionDef'))
        self.generic_visit(node)
        self.namespace = b_utils.namespace_path_split(self.namespace)[0]
示例#3
0
    def post_visit(self, node):
        self.depth -= 1
        LOG.debug("%s\texiting : %s", self.depth, hex(id(node)))

        # HACK(tkelsey): this is needed to clean up post-recursion stuff that
        # gets setup in the visit methods for these node types.
        if isinstance(node, ast.FunctionDef) or isinstance(node, ast.ClassDef):
            self.namespace = b_utils.namespace_path_split(self.namespace)[0]
示例#4
0
    def post_visit(self, node):
        self.depth -= 1
        logger.debug("%s\texiting : %s", self.depth, hex(id(node)))

        # HACK(tkelsey): this is needed to clean up post-recursion stuff that
        # gets setup in the visit methods for these node types.
        if isinstance(node, ast.FunctionDef) or isinstance(node, ast.ClassDef):
            self.namespace = b_utils.namespace_path_split(self.namespace)[0]
示例#5
0
    def visit_ClassDef(self, node):
        """Visitor for AST ClassDef node

        Add class name to current namespace for all descendants.
        :param node: Node being inspected
        :return: -
        """

        if self.debug:
            logger.debug("visit_ClassDef called (%s)", ast.dump(node))

        # For all child nodes, add this class name to current namespace
        self.namespace = b_utils.namespace_path_join(self.namespace, node.name)
        self.generic_visit(node)
        self.namespace = b_utils.namespace_path_split(self.namespace)[0]
示例#6
0
    def visit_ClassDef(self, node):
        '''Visitor for AST ClassDef node

        Add class name to current namespace for all descendants.
        :param node: Node being inspected
        :return: -
        '''

        if self.debug:
            self.logger.debug("visit_ClassDef called (%s)", ast.dump(node))

        # For all child nodes, add this class name to current namespace
        self.namespace = b_utils.namespace_path_join(self.namespace, node.name)
        self.generic_visit(node)
        self.namespace = b_utils.namespace_path_split(self.namespace)[0]
示例#7
0
 def test_namespace_path_split(self):
     (head, tail) = b_utils.namespace_path_split('base1.base2.name')
     self.assertEqual('base1.base2', head)
     self.assertEqual('name', tail)
示例#8
0
 def test_namespace_path_split(self):
     (head, tail) = b_utils.namespace_path_split('base1.base2.name')
     self.assertEqual('base1.base2', head)
     self.assertEqual('name', tail)
示例#9
0
 def test_namespace_path_split(self):
     (head, tail) = b_utils.namespace_path_split("base1.base2.name")
     self.assertEqual("base1.base2", head)
     self.assertEqual("name", tail)
示例#10
0
文件: test_util.py 项目: PyCQA/bandit
 def test_namespace_path_split(self):
     (head, tail) = b_utils.namespace_path_split("base1.base2.name")
     self.assertEqual("base1.base2", head)
     self.assertEqual("name", tail)