def inspect_java_stacktrace()

in crashclouseau/java.py [0:0]


def inspect_java_stacktrace(st, node, get_full_path=models.File.get_full_path):
    if not st:
        return [], set()

    lines = map(lambda x: x.strip(), st.split("\n"))
    lines = filter(lambda x: x.startswith("at "), lines)
    stack = []
    files = set()
    for n, line in enumerate(lines):
        m = JAVA_PAT1.match(line)
        d = {
            "original": line,
            "filename": "",
            "module": "",
            "changesets": [],
            "function": "",
            "node": "",
            "line": 0,
            "internal": False,
            "stackpos": n,
        }
        stack.append(d)
        if m:
            path, filename, linenumber = m.groups()
            if path.startswith("org.mozilla."):
                d["internal"] = True
                d["node"] = node
                d["line"] = int(linenumber)
                base_path, d["function"] = parse_path(path)
                filename = base_path + "/" + filename
                filename = get_full_path(filename)
                d["filename"] = filename
                files.add(filename)

    return stack, files