@specs-feup/clava
Version:
A C/C++ source-to-source compiler written in Typescript
55 lines • 2 kB
JavaScript
import Io from "@specs-feup/lara/api/lara/Io.js";
import Clava from "../Clava.js";
// Class sorting resultLists and generating an analysis report
export default class MessageGenerator {
globalFileResultList = {};
printMessage;
writeFile;
constructor(printMessage = true, writeFile = false) {
this.printMessage = printMessage;
this.writeFile = writeFile;
}
enableFileOutput() {
this.writeFile = true;
}
append(resultList) {
if (resultList === undefined) {
return;
}
const fileName = resultList.fileName;
let fileResultList = this.globalFileResultList[fileName];
if (fileResultList === undefined) {
fileResultList = [];
this.globalFileResultList[fileName] = fileResultList;
}
for (const result of resultList.list) {
fileResultList.push(result);
}
}
generateReport() {
if (this.globalFileResultList === undefined) {
return;
}
const allMessages = {};
for (const fileName in this.globalFileResultList) {
const messages = [];
for (const result of this.globalFileResultList[fileName]) {
messages.push(fileName + "/l." + result.getNode().line + ": " + result.getMessage());
}
if (this.writeFile || this.printMessage) {
const message = messages.join("\n");
if (this.printMessage) {
console.log(message);
}
if (this.writeFile) {
const analysisFileName = Io.getPath(Clava.getData().getContextFolder(), "AnalysisReports/analysis_" + fileName + "_report.txt");
Io.writeFile(analysisFileName, message);
}
}
// Store messages of file
allMessages[fileName] = messages;
}
return allMessages;
}
}
//# sourceMappingURL=MessageGenerator.js.map