def filter_file_exceptions(self, package, exceptions, issues):
    'Filter issues based on file pattern exceptions list.'
    for (tool, tool_issues) in list(issues.items()):
        warning_printed = False
        to_remove = []
        for issue in tool_issues:
            if (not os.path.isabs(issue.filename)):
                if (not warning_printed):
                    self.print_exception_warning(tool)
                    warning_printed = True
                continue
            rel_path = os.path.relpath(issue.filename, package.path)
            for exception in exceptions:
                if ((exception['tools'] == 'all') or (tool in exception['tools'])):
                    for pattern in exception['globs']:
                        fname = issue.filename
                        prefix = '/home/travis/build/'
                        if ((pattern == '*/build/*') and fname.startswith(prefix)):
                            fname = fname[len(prefix):]
                        if (fnmatch.fnmatch(fname, pattern) or fnmatch.fnmatch(rel_path, pattern)):
                            to_remove.append(issue)
        issues[tool] = [issue for issue in tool_issues if (issue not in to_remove)]
    return issues
Filter issues based on file pattern exceptions list.
def filter_file_exceptions(self, package, exceptions, issues):
    
    for (tool, tool_issues) in list(issues.items()):
        warning_printed = False
        to_remove = []
        for issue in tool_issues:
            if (not os.path.isabs(issue.filename)):
                if (not warning_printed):
                    self.print_exception_warning(tool)
                    warning_printed = True
                continue
            rel_path = os.path.relpath(issue.filename, package.path)
            for exception in exceptions:
                if ((exception['tools'] == 'all') or (tool in exception['tools'])):
                    for pattern in exception['globs']:
                        fname = issue.filename
                        prefix = '/home/travis/build/'
                        if ((pattern == '*/build/*') and fname.startswith(prefix)):
                            fname = fname[len(prefix):]
                        if (fnmatch.fnmatch(fname, pattern) or fnmatch.fnmatch(rel_path, pattern)):
                            to_remove.append(issue)
        issues[tool] = [issue for issue in tool_issues if (issue not in to_remove)]
    return issues