распаковка сообщений от консольного режима. фикс подсчета ошибок,различия считались за ошибки, но для них уже давно есть отдельное поле

++
This commit is contained in:
2025-06-06 14:06:29 +03:00
parent b418066932
commit 3090e80f72
5 changed files with 30 additions and 135 deletions

4
.idea/workspace.xml generated
View File

@@ -10,8 +10,8 @@
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_ParseFilesWithOrder.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/SPF_ParseFilesWithOrder.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforVersion_json.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforVersion_json.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Project/db_project_info.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Project/db_project_info.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -4,7 +4,7 @@
"ServerUserPassword": "mprit_2011", "ServerUserPassword": "mprit_2011",
"OfferRegistrationOnStart": true, "OfferRegistrationOnStart": true,
"Workspace": "E:\\Tests", "Workspace": "E:\\Tests",
"ProjectsSearchDirectory": "E:\\BUG", "ProjectsSearchDirectory": "E:\\Tests\\Downloads\\composit_1749198959",
"DocumentsDirectory": "C:\\Users\\misha\\Documents\\_testing_system", "DocumentsDirectory": "C:\\Users\\misha\\Documents\\_testing_system",
"VisualiserPath": "C:\\Users\\misha\\Downloads", "VisualiserPath": "C:\\Users\\misha\\Downloads",
"Sapfor_FPath": "E:\\_sapfor_x64\\Components\\Sapfor_F", "Sapfor_FPath": "E:\\_sapfor_x64\\Components\\Sapfor_F",

View File

@@ -3,7 +3,7 @@ import Common.Utils.Vector_;
import java.util.Vector; import java.util.Vector;
public class Constants { public class Constants {
public static final int version = 1250; public static final int version = 1252;
public static final int planner_version = 24; public static final int planner_version = 24;
public static final int testingMaxKernels = 64; public static final int testingMaxKernels = 64;
//-- //--

View File

@@ -8,6 +8,9 @@ import _VisualDVM.ProjectData.Files.FileType;
import _VisualDVM.ProjectData.Files.ProjectFile; import _VisualDVM.ProjectData.Files.ProjectFile;
import _VisualDVM.ProjectData.LanguageName; import _VisualDVM.ProjectData.LanguageName;
import _VisualDVM.ProjectData.Messages.Errors.MessageError; import _VisualDVM.ProjectData.Messages.Errors.MessageError;
import _VisualDVM.ProjectData.Messages.FileMessagesJson;
import _VisualDVM.ProjectData.Messages.Message;
import _VisualDVM.ProjectData.Messages.MessagesJson;
import _VisualDVM.ProjectData.Project.db_project_info; import _VisualDVM.ProjectData.Project.db_project_info;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask; import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask;
import _VisualDVM.Utils; import _VisualDVM.Utils;
@@ -187,130 +190,9 @@ public class SapforVersion_json implements Serializable {
ex.printStackTrace(); ex.printStackTrace();
} }
return text1.equalsIgnoreCase(text2); return text1.equalsIgnoreCase(text2);
// if (!Utils.compareFortranTexts(text1, text2)) {
// return false;
// }
} }
return true; return true;
} }
public MessageError unpackMessage(String line_in) throws Exception {
MessageError res = new MessageError();
res.file = "";
res.line = CommonConstants.Nan;
res.value = "";
String line = line_in.substring(9);
int i = 0;
int s = 0;
String lexeme = "";
//#1020: red43.fdv: line 988]: Active DVM directives are not supported (turn on DVM-directive support option)
for (char c : line.toCharArray()) {
switch (s) {
case 0:
//поиск groups_s
if (c == '#') {
s = 1;
lexeme = "";
} else return null;
break;
case 1:
//group_s
if (isDigit(c)) {
// res.group_s = res.getGroup_s() + c;
lexeme += c;
} else if (c == ':') {
s = 2;
res.group = Integer.parseInt(lexeme);
} else return null;
break;
case 2:
//поиск filename
if (c == ' ') {
s = 3;
} else return null;
break;
case 3:
//filename
if (c == ':') {
s = 4;
} else {
res.file += c;
}
break;
case 4:
//поиск line
if (c == ' ') {
s = 5;
lexeme = "";
} else return null;
break;
case 5:
//line
if (c == ' ') {
if (!lexeme.equals("line"))
return null;
else {
s = 6;
lexeme = "";
}
} else {
lexeme += c;
}
break;
case 6:
//line number
if (isDigit(c)) {
lexeme += c;
} else if (c == ']') {
res.line = Integer.parseInt(lexeme);
s = 7;
} else return null;
break;
case 7:
//Поиск value
if (c == ':') {
s = 8;
} else return null;
break;
case 8:
if (c == ' ') {
s = 9;
} else return null;
break;
case 9:
//value
res.value += c;
break;
}
;
++i;
}
//--
if (s != 9)
return null;
//--
return res;
}
public void readMessagesFromFileDump(File file, Vector<MessageError> messages) {
try {
//Образец запакованного сообщения
//ERROR - [#1020: red43.fdv: line 988]: Active DVM directives are not supported (turn on DVM-directive support option)
Vector<String> lines = new Vector<>(FileUtils.readLines(file));
if (!lines.isEmpty()) {
for (int i = lines.size() - 1; i >= 0; --i) {
String line = lines.get(i);
if (line.startsWith("ERROR - ")) {
MessageError message = unpackMessage(line);
if (message != null)
messages.add(message);
//--
} else break;
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
//--
public void createProject(File rootHome) throws Exception { public void createProject(File rootHome) throws Exception {
project = null; project = null;
String version_ = Utils_.isWindows() ? Utils_.toW(version) : Utils_.toU(version); String version_ = Utils_.isWindows() ? Utils_.toW(version) : Utils_.toU(version);
@@ -327,20 +209,19 @@ public class SapforVersion_json implements Serializable {
} }
public void ReadMessages() throws Exception { public void ReadMessages() throws Exception {
if (project != null) { if (project != null) {
Vector<MessageError> messages = new Vector<>();
//-- //--
File p_out = Paths.get(project.Home.getAbsolutePath(), Constants.data, Constants.parse_out_file).toFile(); File p_out = Paths.get(project.Home.getAbsolutePath(), Constants.data, Constants.parse_out_file).toFile();
File p_err = Paths.get(project.Home.getAbsolutePath(), Constants.data, Constants.parse_err_file).toFile(); File p_err = Paths.get(project.Home.getAbsolutePath(), Constants.data, Constants.parse_err_file).toFile();
File out = Paths.get(project.Home.getAbsolutePath(), Constants.data, Constants.out_file).toFile(); File out = Paths.get(project.Home.getAbsolutePath(), Constants.data, Constants.out_file).toFile();
File err = Paths.get(project.Home.getAbsolutePath(), Constants.data, Constants.err_file).toFile(); File err = Paths.get(project.Home.getAbsolutePath(), Constants.data, Constants.err_file).toFile();
File messages_dump = Paths.get(project.Home.getAbsolutePath(), Constants.data, "error_messages.json").toFile();
MessagesJson messagesJson = null;
//-- //--
if (p_out.exists()) { if (p_out.exists()) {
project.Log += (FileUtils.readFileToString(p_out)); project.Log += (FileUtils.readFileToString(p_out));
readMessagesFromFileDump(p_out, messages);
} }
if (out.exists()) { if (out.exists()) {
project.Log += "\n" + FileUtils.readFileToString(out); project.Log += "\n" + FileUtils.readFileToString(out);
readMessagesFromFileDump(out, messages);
} }
//в потоки ошибок идет информация от операционной системы. сообщений там быть не должно. //в потоки ошибок идет информация от операционной системы. сообщений там быть не должно.
if (p_err.exists()) if (p_err.exists())
@@ -348,19 +229,33 @@ public class SapforVersion_json implements Serializable {
if (err.exists()) if (err.exists())
project.Log += "\n" + FileUtils.readFileToString(err); project.Log += "\n" + FileUtils.readFileToString(err);
//-- //--
if (messages_dump.exists()){
try {
String packed = FileUtils.readFileToString(messages_dump);
messagesJson = Utils_.gson.fromJson(packed, MessagesJson.class);
}
catch (Exception ex){
ex.printStackTrace();
}
}
project.Open(); project.Open();
project.Update(); //Журнал project.Update(); //Журнал
//а так же, убрать dep и txt //а так же, убрать dep и txt
project.db.BeginTransaction(); if (messagesJson!=null){
for (MessageError m : messages) { project.db.BeginTransaction();
if (project.db.files.containsKey(m.file)) { //-
DBProjectFile file = project.db.files.Data.get(m.file); for (FileMessagesJson fileMessagesJson: messagesJson.allMessages){
file.CreateAndAddNewMessage(1, m.value, m.line, m.group); fileMessagesJson.file = Utils_.toW(fileMessagesJson.file);
//--
DBProjectFile file = project.db.files.Data.get(fileMessagesJson.file);
for (Message message: fileMessagesJson.messages) {
file.CreateAndAddNewMessage(1, message.value, message.line, message.group);
}
//update file //update file
project.db.Update(file); project.db.Update(file);
} }
project.db.Commit();
} }
project.db.Commit();
project.db.Disconnect(); project.db.Disconnect();
} }
} }

View File

@@ -195,7 +195,7 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
Print("сравнение завершено"); Print("сравнение завершено");
log.Writeln_("Различий с эталоном: " + testingPackage.mismatchesCount); log.Writeln_("Различий с эталоном: " + testingPackage.mismatchesCount);
if (testingPackage.mismatchesCount > 0) { if (testingPackage.mismatchesCount > 0) {
testingPackage.doneTasksCount -= testingPackage.mismatchesCount; // testingPackage.doneTasksCount -= testingPackage.mismatchesCount;
testingPackage.state = TasksPackageState.DoneWithErrors; testingPackage.state = TasksPackageState.DoneWithErrors;
} }
return; return;