43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
import json
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Dict, List
|
|
|
|
|
|
@dataclass
|
|
class GCovLine:
|
|
line_number: int
|
|
count: int
|
|
branch_number: int = 0
|
|
|
|
|
|
class GCovFile:
|
|
def __init__(self, path: str) -> None:
|
|
self._path = path
|
|
self._data: dict = {}
|
|
|
|
self.files: Dict[str, List[GCovLine]] = {}
|
|
|
|
def read(self) -> None:
|
|
with open(self._path, "r") as infile:
|
|
self._data = json.load(infile)
|
|
|
|
for file in self._data["files"]:
|
|
name: str = file["file"]
|
|
lines: List[GCovLine] = []
|
|
|
|
for line in file["lines"]:
|
|
lines.append(GCovLine(line["line_number"], line["count"]))
|
|
|
|
# Branch specific identification. TODO! later.
|
|
#if len(line["branches"]):
|
|
# # GCov reports branches in reverse order to our parser.
|
|
# branch_number = len(line["branches"])
|
|
# for branch in line["branches"]:
|
|
# lines.append(GCovLine(line["line_number"], branch["count"], branch_number))
|
|
# branch_number -= 1
|
|
#else:
|
|
# lines.append(GCovLine(line["line_number"], line["count"])))
|
|
|
|
self.files[name] = lines
|