Spaces Data

Minimal test - lines (340, 385)

path: .spaces[1].spaces[1].metrics.mi.mi_sei
old: 49.90181448595376
new: 52.87373474110046

path: .spaces[1].spaces[1].metrics.mi.mi_visual_studio
old: 42.35380945175059
new: 41.71489205474028

path: .spaces[1].spaces[1].metrics.mi.mi_original
old: 72.42501416249351
new: 71.33246541360587

path: .spaces[1].spaces[1].metrics.loc.sloc
old: 43.0
new: 46.0

path: .spaces[1].spaces[1].metrics.loc.cloc
old: 3.0
new: 5.0

path: .spaces[1].spaces[1].metrics.loc.blank
old: 8.0
new: 9.0

Code

    def log(self, line):
        if re.match(self.startRegExp, line):
            self.inReport = True
            return

        if re.match(self.fatalErrorRegExp, line):
            self.fatalError = True
            return

        if re.match(self.symbolizerOomRegExp, line):
            self.symbolizerError = True
            return

        if not self.inReport:
            return

        if line.startswith("Direct leak") or line.startswith("Indirect leak"):
            self._finishStack()
            self.recordMoreFrames = True
            self.currStack = []
            return

        if line.startswith("SUMMARY: AddressSanitizer"):
            self._finishStack()
            self.inReport = False
            return

        if not self.recordMoreFrames:
            return

        stackFrame = re.match(self.stackFrameRegExp, line)
        if stackFrame:
            # Split the frame to remove any return types.
            frame = stackFrame.group(1).split()[-1]
            if not re.match(self.skipListRegExp, frame):
                self._recordFrame(frame)
            return

        sysLibStackFrame = re.match(self.sysLibStackFrameRegExp, line)
        if sysLibStackFrame:
            # System library stack frames will never match the skip list,
            # so don't bother checking if they do.
            self._recordFrame(sysLibStackFrame.group(1))

        # If we don't match either of these, just ignore the frame.
        # We'll end up with "unknown stack" if everything is ignored.