summaryrefslogtreecommitdiff
path: root/ACE/bin/PythonACE/fuzz/_generic_handler.py
blob: ffc7bc10167d32e8dcc9167b817ed4b78c8626d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
""" Defines a generic handler that tests against a given regex, and allows for exclusions. """

from sys import stderr
import _warning_handler

def generic_handler (regex, begin_exclude, end_exclude, error_message, file_name, file_content, warn = False):
    retval = 0
    
    if regex.search (file_content) != None:
        # We have a potential violation, lets check
        lines = file_content.splitlines ()
        exclusion = False
        for line in range (len (lines)):
            if begin_exclude.search (lines[line]) != None:
                exclusion = True
            elif end_exclude.search (lines[line]) != None:
                exclusion = False
            elif (exclusion == False) and (regex.search (lines[line]) != None):
                # Violation!
                msg = file_name + ':' + str (line + 1) + error_message
                if not warn:
                    stderr.write (msg)
                    retval = 1
                else:
                    handler = _warning_handler.Warning_Handler.getInstance ()
                    handler.add_warning (msg)
    return retval

def generic_handler_no_exceptions (regex, error_message, file_name, file_content, warn = False):
    retval = 0
    
    if regex.search (file_content) != None:
        # We have a potential violation, lets check
        lines = file_content.splitlines ()
        for line in range (len (lines)):
            if regex.search (lines[line]) != None:
                msg = file_name + ':' + str (line + 1) + error_message
                # Violation!
                if not warn:
                    stderr.write (msg)
                    retval = 1
                else:
                    Warning_Handler.getInstance ().add_warning (msg)
    return retval