diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 300234a5..32d4eb14 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -12,6 +12,7 @@
+
diff --git a/src/Repository/Component/Sapfor/Sapfor.java b/src/Repository/Component/Sapfor/Sapfor.java
index 2a8449cb..80c76dee 100644
--- a/src/Repository/Component/Sapfor/Sapfor.java
+++ b/src/Repository/Component/Sapfor/Sapfor.java
@@ -491,7 +491,18 @@ public abstract class Sapfor extends OSDComponent {
return res;
}
//--
- //-------------------------------------------------------------------------------------------------------------------
+ //------------------------------------------------------------------------------------------------------------------
+ public String getConsoleFlags() throws Exception {
+ Vector res = new Vector<>();
+ if (Global.getSetting(SettingName.FREE_FORM).toBoolean())
+ res.add("-f90");
+ if (Global.getSetting(SettingName.STATIC_SHADOW_ANALYSIS).toBoolean())
+ res.add("-sh");
+ res.add("-shwidth " + Global.getSetting(SettingName.MAX_SHADOW_WIDTH));
+ if (Global.getSetting(SettingName.KEEP_SPF_DIRECTIVES).toBoolean())
+ res.add("-keepSPF");
+ return String.join(" ", res);
+ }
public static boolean checkLines(Vector lines) {
for (String line : lines) {
if (line.toLowerCase().contains("internal error")) {
@@ -527,6 +538,7 @@ public abstract class Sapfor extends OSDComponent {
Utils.delete_with_check(errorsFile);
//---
File file = new File(data_workspace, name + (Global.isWindows ? ".bat" : ".sh"));
+ System.out.println(file.getAbsolutePath());
FileUtils.write(file,
Utils.DQuotes(sapfor_drv)
+ (flags.isEmpty() ? "" : (" " + flags))
@@ -562,4 +574,24 @@ public abstract class Sapfor extends OSDComponent {
checkLines(outputLines) &&
checkLines(errorsLines);
}
+ public static boolean parse(File sapfor_drv, File workspace, String flags) throws Exception {
+ return performScript(
+ "parse",
+ sapfor_drv,
+ workspace,
+ "-parse *.f *.for *.fdv *.f90 *.f77",
+ flags,
+ Constants.parse_out_file,
+ Constants.parse_err_file)
+ && (new File(workspace, "dvm.proj")).exists();
+ }
+ public static boolean analysis(File sapfor_drv, File workspace, PassCode_2021 code, String flags) throws Exception {
+ return performScript("analysis",
+ sapfor_drv,
+ workspace,
+ code.getTestingCommand(),
+ flags,
+ Constants.out_file,
+ Constants.err_file);
+ }
}
diff --git a/src/TestingSystem/Common/Test/Test.java b/src/TestingSystem/Common/Test/Test.java
index dd5da213..34bee210 100644
--- a/src/TestingSystem/Common/Test/Test.java
+++ b/src/TestingSystem/Common/Test/Test.java
@@ -82,7 +82,7 @@ public class Test extends riDBObject {
File tempProject = getTempProject();
File tempArchive = getTempArchive();
//- создать бд.
- db_project_info project = new db_project_info(dir);
+ db_project_info project = new db_project_info(tempProject);
project.Open();
project.Close();
//-
diff --git a/src/TestingSystem/SAPFOR/PerformSapforTask.java b/src/TestingSystem/SAPFOR/PerformSapforTask.java
index ed57be82..f6e4c2e7 100644
--- a/src/TestingSystem/SAPFOR/PerformSapforTask.java
+++ b/src/TestingSystem/SAPFOR/PerformSapforTask.java
@@ -45,19 +45,11 @@ public class PerformSapforTask extends Pass_2021 {
task = null;
//--->>
return true;
- }
+ }
protected boolean parse() throws Exception {
- if (Sapfor.performScript(
- "parse",
- sapfor_drv,
- parentTask,
- "-parse *.f *.for *.fdv *.f90 *.f77",
- target.flags,
- Constants.parse_out_file,
- Constants.parse_err_file)
- && (new File(parentTask, "dvm.proj")).exists()) {
+ if (Sapfor.parse(sapfor_drv, parentTask, target.flags)){
return true;
- } else {
+ }else {
target.state = TaskState.DoneWithErrors;
return false;
}
diff --git a/src/Visual_DVM_2021/Passes/All/CreateTestFromFolder.java b/src/Visual_DVM_2021/Passes/All/CreateTestFromFolder.java
index 4cc12a71..ac891603 100644
--- a/src/Visual_DVM_2021/Passes/All/CreateTestFromFolder.java
+++ b/src/Visual_DVM_2021/Passes/All/CreateTestFromFolder.java
@@ -5,6 +5,7 @@ import Common.Utils.Files.VDirectoryChooser;
import Common.Utils.Utils;
import ProjectData.Files.ProjectFile;
import ProjectData.Project.db_project_info;
+import Repository.Component.Sapfor.Sapfor;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test;
import Visual_DVM_2021.Passes.PassCode_2021;
@@ -133,7 +134,14 @@ public class CreateTestFromFolder extends Pass_2021 {
System.out.println("===================");
//--
db_project_info project = target.packCode(dir); //создание копии папки, и архивация.
- //-- получить размерность консольным сапфором.
+ //-- получить размерность консольным сапфором. папка уже отправлена и чистить ее не нужно!!
+ if (Sapfor.parse(Current.getSapfor().getFile(), project.Home, Current.getSapfor().getConsoleFlags())){
+ Sapfor.analysis(Current.getSapfor().getFile(),project.Home,
+ PassCode_2021.SPF_GetMaxMinBlockDistribution,
+ Current.getSapfor().getConsoleFlags());
+ }
+ //todo получить значение из файла вывода анализа.
+
}
@Override
protected void performDone() throws Exception {
diff --git a/src/Visual_DVM_2021/Passes/PassCode_2021.java b/src/Visual_DVM_2021/Passes/PassCode_2021.java
index 1a4969b0..c861a9a4 100644
--- a/src/Visual_DVM_2021/Passes/PassCode_2021.java
+++ b/src/Visual_DVM_2021/Passes/PassCode_2021.java
@@ -314,7 +314,6 @@ public enum PassCode_2021 {
return "Удаление Open MP директив";
case CreateGroupFromDirectory:
return "Создать группу тестов из папки";
-
case AbortTaskPackage:
return "Прерывать пакет тестирования DVM";
case DeleteConfiguration:
@@ -883,6 +882,9 @@ public enum PassCode_2021 {
case SPF_ResolveCommonBlockConflicts:
name = "FIX_COMMON_BLOCKS";
break;
+ case SPF_GetMaxMinBlockDistribution:
+ name = "GET_MIN_MAX_BLOCK_DIST";
+ break;
}
return p + " " + name;
}