diff --git a/src/main/java/de/tlc4b/Log.java b/src/main/java/de/tlc4b/Log.java deleted file mode 100644 index 88c50401cf9724dc04d73772f2a244d251bd72b2..0000000000000000000000000000000000000000 --- a/src/main/java/de/tlc4b/Log.java +++ /dev/null @@ -1,77 +0,0 @@ -package de.tlc4b; - -import static de.tlc4b.util.StopWatch.Watches.PARSING_TIME; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import de.tlc4b.tlc.TLCResults; -import de.tlc4b.util.StopWatch; -import de.tlc4b.util.StopWatch.Watches; - -public final class Log { - - public static final String DELIMITER = ";"; - - private Log() {} - - public static String getCSVString(TLC4B tlc4b, TLCResults tlcResults) { - List<String> fieldNames = new ArrayList<>(); - List<String> fieldValues = new ArrayList<>(); - - fieldNames.add("Machine File"); - String machineFile = tlc4b.getMainFile().getAbsolutePath(); - fieldValues.add(machineFile); - - fieldNames.add("TLC Model Checking Time (s)"); - double tlcModelCheckingTime = tlcResults.getModelCheckingTime(); - fieldValues.add(String.valueOf(tlcModelCheckingTime)); - - fieldNames.add("Parsing Time Of B machine (ms)"); - long parseTime = StopWatch.getRunTime(PARSING_TIME); - fieldValues.add(String.valueOf(parseTime)); - - fieldNames.add("Translation Time (ms)"); - long translationTime = StopWatch.getRunTime(Watches.TRANSLATION_TIME); - fieldValues.add(String.valueOf(translationTime)); - - fieldNames.add("Model Checking Time (ms)"); - long modelCheckingTime = StopWatch.getRunTime(Watches.MODEL_CHECKING_TIME); - fieldValues.add(String.valueOf(modelCheckingTime)); - - fieldNames.add("TLC Result"); - fieldValues.add(tlcResults.getResultString()); - - fieldNames.add("States analysed"); - fieldValues.add(Integer.toString(tlcResults.getNumberOfDistinctStates())); - - fieldNames.add("Transitions fired"); - fieldValues.add(Integer.toString(tlcResults.getNumberOfTransitions())); - - fieldNames.add("Violated Definition"); - String violatedDefinition = tlcResults.getViolatedDefinition(); - fieldValues.add(violatedDefinition != null ? violatedDefinition : ""); - - fieldNames.add("Violated Assertions"); - List<String> violatedAssertions = tlcResults.getViolatedAssertions(); - fieldValues.add(!violatedAssertions.isEmpty() ? String.join(DELIMITER, violatedAssertions) : ""); - - fieldNames.add("Operation Coverage"); - Map<String, Long> operationCount = tlcResults.getOperationCount(); - List<String> opCountString = new ArrayList<>(); - if (operationCount != null) { - operationCount.forEach((operation, count) -> opCountString.add(operation + DELIMITER + count)); - } - fieldValues.add(!opCountString.isEmpty() ? String.join(DELIMITER, opCountString) : ""); - - fieldNames.add("Trace File"); - fieldValues.add(tlc4b.getTraceFile() != null ? tlc4b.getTraceFile().getAbsolutePath() : ""); - - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < fieldNames.size(); i++) { - sb.append(fieldNames.get(i)).append(DELIMITER).append(fieldValues.get(i)).append("\n"); - } - return sb.toString(); - } -} diff --git a/src/main/java/de/tlc4b/TLC4B.java b/src/main/java/de/tlc4b/TLC4B.java index 31566f7a69f8c601d9c11284d949c18bd3efd4b4..e9b633b89ef32d1f3d6a528d8f5c7acbb4da1385 100644 --- a/src/main/java/de/tlc4b/TLC4B.java +++ b/src/main/java/de/tlc4b/TLC4B.java @@ -9,6 +9,8 @@ import java.io.InputStream; import java.io.OutputStreamWriter; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ExecutionException; @@ -37,6 +39,7 @@ import static de.tlc4b.util.StopWatch.Watches.*; import static de.tlc4b.MP.*; public class TLC4B { + private static final String CSV_DELIMITER = ";"; private String filename; private File mainfile, traceFile; @@ -419,9 +422,68 @@ public class TLC4B { } } + private String getLogCsvString(TLCResults tlcResults) { + List<String> fieldNames = new ArrayList<>(); + List<String> fieldValues = new ArrayList<>(); + + fieldNames.add("Machine File"); + String machineFile = this.getMainFile().getAbsolutePath(); + fieldValues.add(machineFile); + + fieldNames.add("TLC Model Checking Time (s)"); + double tlcModelCheckingTime = tlcResults.getModelCheckingTime(); + fieldValues.add(String.valueOf(tlcModelCheckingTime)); + + fieldNames.add("Parsing Time Of B machine (ms)"); + long parseTime = StopWatch.getRunTime(PARSING_TIME); + fieldValues.add(String.valueOf(parseTime)); + + fieldNames.add("Translation Time (ms)"); + long translationTime = StopWatch.getRunTime(TRANSLATION_TIME); + fieldValues.add(String.valueOf(translationTime)); + + fieldNames.add("Model Checking Time (ms)"); + long modelCheckingTime = StopWatch.getRunTime(MODEL_CHECKING_TIME); + fieldValues.add(String.valueOf(modelCheckingTime)); + + fieldNames.add("TLC Result"); + fieldValues.add(tlcResults.getResultString()); + + fieldNames.add("States analysed"); + fieldValues.add(Integer.toString(tlcResults.getNumberOfDistinctStates())); + + fieldNames.add("Transitions fired"); + fieldValues.add(Integer.toString(tlcResults.getNumberOfTransitions())); + + fieldNames.add("Violated Definition"); + String violatedDefinition = tlcResults.getViolatedDefinition(); + fieldValues.add(violatedDefinition != null ? violatedDefinition : ""); + + fieldNames.add("Violated Assertions"); + List<String> violatedAssertions = tlcResults.getViolatedAssertions(); + fieldValues.add(!violatedAssertions.isEmpty() ? String.join(CSV_DELIMITER, violatedAssertions) : ""); + + fieldNames.add("Operation Coverage"); + Map<String, Long> operationCount = tlcResults.getOperationCount(); + List<String> opCountString = new ArrayList<>(); + if (operationCount != null) { + operationCount.forEach((operation, count) -> opCountString.add(operation + CSV_DELIMITER + count)); + } + fieldValues.add(!opCountString.isEmpty() ? String.join(CSV_DELIMITER, opCountString) : ""); + + fieldNames.add("Trace File"); + fieldValues.add(this.getTraceFile() != null ? this.getTraceFile().getAbsolutePath() : ""); + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < fieldNames.size(); i++) { + sb.append(fieldNames.get(i)).append(CSV_DELIMITER).append(fieldValues.get(i)).append("\n"); + } + return sb.toString(); + } + private void createLogFile(TLCResults results) { if (logFileString != null) { - String logCsvString = Log.getCSVString(this, results); + String logCsvString = getLogCsvString(results); File logFile = new File(logFileString); try (FileWriter fw = new FileWriter(logFile, true)) { // the true will append the new data fw.write(logCsvString);