first commit

This commit is contained in:
Jean-Marie Mineau 2023-11-15 15:59:13 +01:00
commit cd1e91bb99
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
287 changed files with 86425 additions and 0 deletions

View file

@ -0,0 +1,66 @@
from .abstract_tester import abstract_tester
import utils
import error_collector as errors
import datetime
import re
from typing import Type
from pathlib import Path
from typing import Optional
from more_itertools import peekable
class XsbError(errors.LoggedError):
def __init__(
self,
first_line_nb: int,
last_line_nb: int,
msg: str,
logfile_name: str = "",
):
self.first_line_nb = first_line_nb
self.last_line_nb = last_line_nb
self.msg = msg
self.logfile_name = logfile_name
def __str__(self):
return f"++Error{self.msg}"
def get_dict(self) -> dict:
return {
"error_type": "Xsb",
"msg": self.msg,
"first_line": self.first_line_nb,
"last_line": self.last_line_nb,
"logfile_name": self.logfile_name,
}
@staticmethod
def parse_error(logs: peekable) -> Optional["XsbError"]:
line_nb, line = logs.peek((None, None))
if line is None or line_nb is None:
return None
if not line.startswith("++Error"):
return None
error = XsbError(line_nb, line_nb, line.strip())
next(logs)
return error
class wognsen_et_al_tester(abstract_tester):
EXPECTED_ERROR_TYPES: list = [
errors.JavaError,
errors.NoPrefixJavaError,
errors.PythonError,
XsbError,
]
TOOL_NAME = "wognsen_et_al"
def __init__(self):
super().__init__()
@classmethod
def check_success(cls, path: Path, apk_filename: str):
"""Check if the analysis finished without crashing."""
# The tool is supposed to print the graph to stdout, if stdout
# is empty, it means the tool failed.
return (path / "stdout").stat().st_size > 1