From 110c28e62f98bc31ce3a5134804f158b1550d957 Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Tue, 22 Oct 2019 18:29:01 +0200 Subject: [PATCH 01/15] save wizard options to file, incomplete Signed-off-by: Shahrzad --- .../codegenerator/wizard/Configuration.java | 33 +++++++++++++++++++ .../src/de/cognicrypt/core/Constants.java | 1 + 2 files changed, 34 insertions(+) diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java index 5469c2a07..a202bfec5 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java @@ -12,15 +12,22 @@ package de.cognicrypt.codegenerator.wizard; +import java.beans.XMLEncoder; +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; +import java.io.PrintStream; import java.util.List; import java.util.Map; +import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import de.cognicrypt.codegenerator.question.Answer; import de.cognicrypt.codegenerator.question.Question; +import de.cognicrypt.core.Constants; import de.cognicrypt.utils.FileHelper; /** @@ -36,6 +43,32 @@ public abstract class Configuration { public Configuration(Map constraints, String pathOnDisk) { this.pathOnDisk = pathOnDisk; this.options = (Map) constraints; + String path = this.pathOnDisk.substring(0,this.pathOnDisk.lastIndexOf("/")) + "/" +Constants.pathToInstanceFile; + +// System.out.println("HERE IS THE OPTION ON DISK:...... " + this.options.values()); + System.out.println("path issssssss: " + path); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + XMLEncoder xmlEncoder = new XMLEncoder(bos); + xmlEncoder.writeObject(this.options); + xmlEncoder.flush(); + + String serializedMap = bos.toString(); +// System.out.println("lets see IF IT WOOORKSSS: " + serializedMap); +// File fiif = new File(serializedMap, path); +// System.out.println("FILE HAS BEEN CREATED"); + final OutputFormat format = OutputFormat.createPrettyPrint(); + XMLWriter writer; + try { + writer = new XMLWriter(new FileWriter(this.pathOnDisk), format); + writer.write(serializedMap); + writer.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + serializedMap = null; + + } /** diff --git a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java index 9ac2ff6de..0a855ae81 100644 --- a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java +++ b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java @@ -136,6 +136,7 @@ public static enum CG { public static final String NameOfTemporaryMethod = "templateUsage"; public static final String pathsForLibrariesInDevProject = "libs"; public static final String AuthorTag = "@author CogniCrypt"; + public static final String pathToInstanceFile = "savedSelections.txt"; // Output of Code Generation public static final String AdditionalOutputFile = "Output.java"; From 7adb97edcc73e44185abf1428ff2c6c886ceb452 Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Thu, 24 Oct 2019 12:48:54 +0200 Subject: [PATCH 02/15] Saved Q&A hashmap in xml file Signed-off-by: Shahrzad --- .../codegenerator/wizard/Configuration.java | 36 +++++++------------ .../src/de/cognicrypt/core/Constants.java | 2 +- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java index a202bfec5..ed5f44cf3 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java @@ -13,16 +13,14 @@ package de.cognicrypt.codegenerator.wizard; import java.beans.XMLEncoder; -import java.io.ByteArrayOutputStream; +import java.io.BufferedOutputStream; import java.io.File; +import java.io.FileNotFoundException; import java.io.FileOutputStream; -import java.io.FileWriter; import java.io.IOException; -import java.io.PrintStream; import java.util.List; import java.util.Map; -import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import de.cognicrypt.codegenerator.question.Answer; @@ -41,33 +39,23 @@ public abstract class Configuration { final protected String pathOnDisk; public Configuration(Map constraints, String pathOnDisk) { + this.pathOnDisk = pathOnDisk; this.options = (Map) constraints; - String path = this.pathOnDisk.substring(0,this.pathOnDisk.lastIndexOf("/")) + "/" +Constants.pathToInstanceFile; -// System.out.println("HERE IS THE OPTION ON DISK:...... " + this.options.values()); - System.out.println("path issssssss: " + path); - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - XMLEncoder xmlEncoder = new XMLEncoder(bos); - xmlEncoder.writeObject(this.options); - xmlEncoder.flush(); + String path = this.pathOnDisk.substring(0,this.pathOnDisk.lastIndexOf("/")) + "/" +Constants.pathToInstanceFile; - String serializedMap = bos.toString(); -// System.out.println("lets see IF IT WOOORKSSS: " + serializedMap); -// File fiif = new File(serializedMap, path); -// System.out.println("FILE HAS BEEN CREATED"); - final OutputFormat format = OutputFormat.createPrettyPrint(); - XMLWriter writer; + XMLEncoder XMLencoder; try { - writer = new XMLWriter(new FileWriter(this.pathOnDisk), format); - writer.write(serializedMap); - writer.close(); - } catch (IOException e) { + XMLencoder = new XMLEncoder( + new BufferedOutputStream( + new FileOutputStream(path))); + XMLencoder.writeObject(this.options); + XMLencoder.close(); + } catch (FileNotFoundException e1) { // TODO Auto-generated catch block - e.printStackTrace(); + e1.printStackTrace(); } - serializedMap = null; - } diff --git a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java index 0a855ae81..6fa173c25 100644 --- a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java +++ b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java @@ -136,7 +136,7 @@ public static enum CG { public static final String NameOfTemporaryMethod = "templateUsage"; public static final String pathsForLibrariesInDevProject = "libs"; public static final String AuthorTag = "@author CogniCrypt"; - public static final String pathToInstanceFile = "savedSelections.txt"; + public static final String pathToInstanceFile = "savedSelections.xml"; // Output of Code Generation public static final String AdditionalOutputFile = "Output.java"; From 803ced0f8f8d23d0db444be70db85adbb61c0bd0 Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Thu, 6 Feb 2020 20:19:23 +0100 Subject: [PATCH 03/15] Solved issue 193- first draft Signed-off-by: Shahrzad --- .../codegenerator/wizard/AltConfigWizard.java | 5 +- .../codegenerator/wizard/Configuration.java | 63 ++++++++++++++----- .../wizard/CrySLConfiguration.java | 4 +- .../wizard/XSLConfiguration.java | 4 +- .../src/de/cognicrypt/core/Constants.java | 2 +- .../results/ResultsCCUIListener.java | 40 ++++++++++++ 6 files changed, 94 insertions(+), 24 deletions(-) diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/AltConfigWizard.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/AltConfigWizard.java index 7d8665ba0..f70a0c30f 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/AltConfigWizard.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/AltConfigWizard.java @@ -251,7 +251,7 @@ public boolean performFinish() { codeGenerator.getDeveloperProject().refresh(); resetAnswers(); - chosenConfig = new CrySLConfiguration(resFileOSPath, ((CrySLBasedCodeGenerator) codeGenerator).setUpTemplateClass(pathToTemplateFile)); + chosenConfig = new CrySLConfiguration(resFileOSPath, ((CrySLBasedCodeGenerator) codeGenerator).setUpTemplateClass(pathToTemplateFile), selectedTask.getName()); break; case XSL: this.constraints = (this.constraints != null) ? this.constraints : new HashMap<>(); @@ -262,7 +262,7 @@ public boolean performFinish() { // Initialize Code Generation codeGenerator = new XSLBasedGenerator(targetFile, selectedTask.getCodeTemplate()); chosenConfig = new XSLConfiguration(instanceGenerator.getInstances().values().iterator() - .next(), this.constraints, codeGenerator.getDeveloperProject().getProjectPath() + Constants.innerFileSeparator + Constants.pathToClaferInstanceFile); + .next(), this.constraints, codeGenerator.getDeveloperProject().getProjectPath() + Constants.innerFileSeparator + Constants.pathToClaferInstanceFile, selectedTask.getName()); break; default: return false; @@ -279,6 +279,7 @@ public boolean performFinish() { Activator.getDefault().logError(ex); } finally { + waitingDialog.setVisible(false); waitingDialog.dispose(); } diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java index ed5f44cf3..e241c1fdd 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java @@ -12,22 +12,22 @@ package de.cognicrypt.codegenerator.wizard; -import java.beans.XMLEncoder; -import java.io.BufferedOutputStream; import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; +import java.io.FileWriter; import java.io.IOException; import java.util.List; import java.util.Map; import org.dom4j.io.XMLWriter; +import org.eclipse.core.resources.IProject; import de.cognicrypt.codegenerator.question.Answer; import de.cognicrypt.codegenerator.question.Question; import de.cognicrypt.core.Constants; import de.cognicrypt.utils.FileHelper; +import de.cognicrypt.utils.Utils; +import org.json.simple.JSONObject; /** * This class is a storage for the configuration chosen by the user. * @@ -37,25 +37,54 @@ public abstract class Configuration { final protected Map options; final protected String pathOnDisk; + protected Answer answr; + final protected String taskName; - public Configuration(Map constraints, String pathOnDisk) { + @SuppressWarnings("unchecked") + public Configuration(Map constraints, String pathOnDisk, String taskName) throws IOException { + this.answr = new Answer(); this.pathOnDisk = pathOnDisk; this.options = (Map) constraints; + this.taskName = taskName; - String path = this.pathOnDisk.substring(0,this.pathOnDisk.lastIndexOf("/")) + "/" +Constants.pathToInstanceFile; + JSONObject obj = new JSONObject(); + + int m = 1; + for (Question i: this.options.keySet()) { +// System.out.println("finaally the msg--------" + i.getQuestionText()); + obj.put("question" + m , i.getQuestionText()); + m += 1; + } + m = 1; + for (Answer j: this.options.values()) { +// System.out.println("finaally the msg answer--------" + j.getValue()); +// answr = j; + obj.put("answer" + m, j.getValue()); + m +=1 ; + + } + + String path2 = Utils.getCurrentProject().getLocation().toOSString() + "/" +Constants.pathToInstanceFile + taskName + ".json"; - XMLEncoder XMLencoder; - try { - XMLencoder = new XMLEncoder( - new BufferedOutputStream( - new FileOutputStream(path))); - XMLencoder.writeObject(this.options); - XMLencoder.close(); - } catch (FileNotFoundException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } + File file=new File(path2); + file.createNewFile(); + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(obj.toJSONString()); + fileWriter.flush(); + fileWriter.close(); + +// XMLEncoder XMLencoder; +// try { +// XMLencoder = new XMLEncoder( +// new BufferedOutputStream( +// new FileOutputStream(path))); +// XMLencoder.writeObject(this.options); +// XMLencoder.close(); +// } catch (FileNotFoundException e1) { +// // TODO Auto-generated catch block +// e1.printStackTrace(); +// } } diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/CrySLConfiguration.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/CrySLConfiguration.java index 8499d6fd9..5762ab927 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/CrySLConfiguration.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/CrySLConfiguration.java @@ -21,8 +21,8 @@ public class CrySLConfiguration extends Configuration { private final GeneratorClass template; - public CrySLConfiguration(String pathOnDisk, GeneratorClass templateClass) { - super(new HashMap<>(), pathOnDisk); + public CrySLConfiguration(String pathOnDisk, GeneratorClass templateClass, String selectedTask) throws IOException { + super(new HashMap<>(), pathOnDisk, selectedTask); this.template = templateClass; } diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/XSLConfiguration.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/XSLConfiguration.java index de000599d..2bfd9aaed 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/XSLConfiguration.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/XSLConfiguration.java @@ -33,8 +33,8 @@ public class XSLConfiguration extends Configuration { final private InstanceClafer instance; - public XSLConfiguration(InstanceClafer instance, Map constraints, String pathOnDisk) { - super(constraints, pathOnDisk); + public XSLConfiguration(InstanceClafer instance, Map constraints, String pathOnDisk, String taskName) throws IOException { + super(constraints, pathOnDisk, taskName); this.instance = instance; } diff --git a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java index 1724d4ae3..b83d04762 100644 --- a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java +++ b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java @@ -141,7 +141,7 @@ public static enum CG { public static final String NameOfTemporaryMethod = "templateUsage"; public static final String pathsForLibrariesInDevProject = "libs"; public static final String AuthorTag = "@author CogniCrypt"; - public static final String pathToInstanceFile = "savedSelections.xml"; + public static final String pathToInstanceFile = "savedSelections"; // Output of Code Generation public static final String AdditionalOutputFile = "Output.java"; diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java index 8e28405e6..6e1fd2401 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java @@ -6,6 +6,11 @@ package de.cognicrypt.staticanalyzer.results; import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Paths; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; @@ -68,6 +73,9 @@ import soot.tagkit.AbstractHost; import typestate.TransitionFunction; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; /** * This listener is notified of any misuses the analysis finds. It also reports * the results of the analysis to the Statistics View @@ -123,8 +131,40 @@ public void reportError(final AbstractError error) { if (this.depOnly) { return; } + final String errorMessage = error.toErrorMarkerString(); final Statement errorLocation = error.getErrorLocation(); + final String path = this.currentProject.getLocation().toOSString() + "/" + Constants.pathToInstanceFile + "SecureCommunication.json"; +// System.out.println("error message is:---------------------------------- " + errorMessage); + + if (errorMessage.equals("First parameter (with value \"TLSv\") should be any of {TLSv1.2}")) { + JSONParser parser = new JSONParser(); + try { +// System.out.println("the path is------------" + Paths.get(path)); + if (Files.exists(Paths.get(path))) { +// Object obj; + try { + Object obj = parser.parse(new InputStreamReader(new FileInputStream(path))); + JSONObject jsonObject = (JSONObject) obj; + System.out.println("object will be ..........." + jsonObject); + System.out.println("answeer 4 -------" + jsonObject.get("answer4")); + + if (jsonObject.containsKey("answer4") && jsonObject.get("answer4").equals("Legacy Clients (since 2001)")) { + return; + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + }else{ + System.out.println("no path"); + } + } catch (ParseException e2) { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + } sourceFile = unitToResource(errorLocation); final int lineNumber = ((AbstractHost) errorLocation.getUnit().get()).getJavaSourceStartLineNumber(); From 8d9721620b837c5e02569400d8f70e86ed58a669 Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Tue, 11 Feb 2020 16:35:45 +0100 Subject: [PATCH 04/15] cleaned up Signed-off-by: Shahrzad --- .../codegenerator/wizard/Configuration.java | 35 +--------- .../results/ResultsCCUIListener.java | 66 ++++++++++--------- 2 files changed, 37 insertions(+), 64 deletions(-) diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java index e241c1fdd..f66c47102 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java @@ -19,7 +19,6 @@ import java.util.Map; import org.dom4j.io.XMLWriter; -import org.eclipse.core.resources.IProject; import de.cognicrypt.codegenerator.question.Answer; import de.cognicrypt.codegenerator.question.Question; @@ -49,43 +48,15 @@ public Configuration(Map constraints, String pathOnDisk, String taskName) this.taskName = taskName; JSONObject obj = new JSONObject(); - - int m = 1; - for (Question i: this.options.keySet()) { -// System.out.println("finaally the msg--------" + i.getQuestionText()); - obj.put("question" + m , i.getQuestionText()); - m += 1; - } - m = 1; - for (Answer j: this.options.values()) { -// System.out.println("finaally the msg answer--------" + j.getValue()); -// answr = j; - obj.put("answer" + m, j.getValue()); - m +=1 ; - - } - - String path2 = Utils.getCurrentProject().getLocation().toOSString() + "/" +Constants.pathToInstanceFile + taskName + ".json"; + this.options.forEach((question,answer) ->obj.put(question.getQuestionText(), answer.getValue())); + String jsonPath = Utils.getCurrentProject().getLocation().toOSString() + "/" +Constants.pathToInstanceFile + taskName + ".json"; - File file=new File(path2); + File file=new File(jsonPath); file.createNewFile(); FileWriter fileWriter = new FileWriter(file); fileWriter.write(obj.toJSONString()); fileWriter.flush(); fileWriter.close(); - -// XMLEncoder XMLencoder; -// try { -// XMLencoder = new XMLEncoder( -// new BufferedOutputStream( -// new FileOutputStream(path))); -// XMLencoder.writeObject(this.options); -// XMLencoder.close(); -// } catch (FileNotFoundException e1) { -// // TODO Auto-generated catch block -// e1.printStackTrace(); -// } - } /** diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java index 6e1fd2401..afec7e926 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java @@ -131,40 +131,15 @@ public void reportError(final AbstractError error) { if (this.depOnly) { return; } - - final String errorMessage = error.toErrorMarkerString(); - final Statement errorLocation = error.getErrorLocation(); - final String path = this.currentProject.getLocation().toOSString() + "/" + Constants.pathToInstanceFile + "SecureCommunication.json"; -// System.out.println("error message is:---------------------------------- " + errorMessage); - - if (errorMessage.equals("First parameter (with value \"TLSv\") should be any of {TLSv1.2}")) { - JSONParser parser = new JSONParser(); - try { -// System.out.println("the path is------------" + Paths.get(path)); - if (Files.exists(Paths.get(path))) { -// Object obj; - try { - Object obj = parser.parse(new InputStreamReader(new FileInputStream(path))); - JSONObject jsonObject = (JSONObject) obj; - System.out.println("object will be ..........." + jsonObject); - System.out.println("answeer 4 -------" + jsonObject.get("answer4")); - - if (jsonObject.containsKey("answer4") && jsonObject.get("answer4").equals("Legacy Clients (since 2001)")) { - return; - } - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - }else{ - System.out.println("no path"); - } - } catch (ParseException e2) { - // TODO Auto-generated catch block - e2.printStackTrace(); + if (error instanceof ConstraintError) { + ConstraintError conError = (ConstraintError) error; +// System.out.println("type of error ---------------" + ); + if (conError.getBrokenConstraint().toString().equals("VC:protocol - TLSv1.2,") && isLegacyClient()) { + return; } } + final String errorMessage = error.toErrorMarkerString(); + final Statement errorLocation = error.getErrorLocation(); sourceFile = unitToResource(errorLocation); final int lineNumber = ((AbstractHost) errorLocation.getUnit().get()).getJavaSourceStartLineNumber(); @@ -269,6 +244,33 @@ public void reportError(final AbstractError error) { } } + + @SuppressWarnings("unchecked") + public Boolean isLegacyClient() { + final String path = this.currentProject.getLocation().toOSString() + "/" + Constants.pathToInstanceFile + "SecureCommunication.json"; + JSONParser parser = new JSONParser(); + try { + if (Files.exists(Paths.get(path))) { + try { + Object obj = parser.parse(new InputStreamReader(new FileInputStream(path))); + JSONObject jsonObject = (JSONObject) obj; + String clientsQuestion = "Which clients should the server should at least support?"; + + if (jsonObject.containsKey(clientsQuestion) && jsonObject.get(clientsQuestion).equals("Legacy Clients (since 2001)")) { + return true; + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + } catch (ParseException e2) { + // TODO Auto-generated catch block + e2.printStackTrace(); + } + return false; + } // It only works when the secure object checkbox in preference page is checked @Override From 2a5ad9ad2443be3f3cc698f5ab73529d097b1f4a Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Tue, 11 Feb 2020 17:17:48 +0100 Subject: [PATCH 05/15] minor fix try-catch statement Signed-off-by: Shahrzad --- .../staticanalyzer/results/ResultsCCUIListener.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java index afec7e926..34cd5e7da 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java @@ -251,7 +251,7 @@ public Boolean isLegacyClient() { JSONParser parser = new JSONParser(); try { if (Files.exists(Paths.get(path))) { - try { + Object obj = parser.parse(new InputStreamReader(new FileInputStream(path))); JSONObject jsonObject = (JSONObject) obj; String clientsQuestion = "Which clients should the server should at least support?"; @@ -259,14 +259,8 @@ public Boolean isLegacyClient() { if (jsonObject.containsKey(clientsQuestion) && jsonObject.get(clientsQuestion).equals("Legacy Clients (since 2001)")) { return true; } - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } catch (ParseException e2) { - // TODO Auto-generated catch block + } catch (ParseException | IOException e2) { e2.printStackTrace(); } return false; From 15059a45aa5df21e75b10a987622354d71d3f503 Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Sun, 16 Feb 2020 14:36:37 +0100 Subject: [PATCH 06/15] all changes related to add json-simple library Signed-off-by: Shahrzad --- plugins/de.cognicrypt.codegenerator/.classpath | 6 ++++++ .../META-INF/MANIFEST.MF | 3 ++- .../build.properties | 4 +++- .../lib/json-simple.jar | Bin 0 -> 23931 bytes plugins/de.cognicrypt.core/META-INF/MANIFEST.MF | 1 + plugins/de.cognicrypt.staticanalyzer/.classpath | 7 ++++++- .../META-INF/MANIFEST.MF | 5 +++-- .../build.properties | 5 +++-- .../resources/json-simple.jar | Bin 0 -> 23931 bytes 9 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 plugins/de.cognicrypt.codegenerator/lib/json-simple.jar create mode 100644 plugins/de.cognicrypt.staticanalyzer/resources/json-simple.jar diff --git a/plugins/de.cognicrypt.codegenerator/.classpath b/plugins/de.cognicrypt.codegenerator/.classpath index e70863972..70c1a6ee1 100644 --- a/plugins/de.cognicrypt.codegenerator/.classpath +++ b/plugins/de.cognicrypt.codegenerator/.classpath @@ -38,5 +38,11 @@ + + + + + + diff --git a/plugins/de.cognicrypt.codegenerator/META-INF/MANIFEST.MF b/plugins/de.cognicrypt.codegenerator/META-INF/MANIFEST.MF index 1fd59cc1e..deee6c5fd 100644 --- a/plugins/de.cognicrypt.codegenerator/META-INF/MANIFEST.MF +++ b/plugins/de.cognicrypt.codegenerator/META-INF/MANIFEST.MF @@ -29,7 +29,8 @@ Bundle-ClassPath: lib/claferchocoig.jar, src/main/resources/, src/main/java/, lib/dom4j-2.0.0.jar, - lib/saxon9he.jar + lib/saxon9he.jar, + lib/json-simple.jar Automatic-Module-Name: de.cognicrypt.codegenerator Bundle-Vendor: TU Darmstadt, Paderborn University Export-Package: de.cognicrypt.codegenerator, diff --git a/plugins/de.cognicrypt.codegenerator/build.properties b/plugins/de.cognicrypt.codegenerator/build.properties index 330d861c4..518f24263 100644 --- a/plugins/de.cognicrypt.codegenerator/build.properties +++ b/plugins/de.cognicrypt.codegenerator/build.properties @@ -9,4 +9,6 @@ bin.includes = plugin.xml,\ src/main/java/,\ target/classes/Tasks/tasks.json,\ lib/dom4j-2.0.0.jar,\ - lib/saxon9he.jar \ No newline at end of file + lib/saxon9he.jar,\ + lib/json-simple.jar + diff --git a/plugins/de.cognicrypt.codegenerator/lib/json-simple.jar b/plugins/de.cognicrypt.codegenerator/lib/json-simple.jar new file mode 100644 index 0000000000000000000000000000000000000000..dfd5856d0cad81dfe7845ea6ff4d170d8064d7b0 GIT binary patch literal 23931 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 - + + + + + + diff --git a/plugins/de.cognicrypt.staticanalyzer/META-INF/MANIFEST.MF b/plugins/de.cognicrypt.staticanalyzer/META-INF/MANIFEST.MF index b547db499..fc666c0c4 100644 --- a/plugins/de.cognicrypt.staticanalyzer/META-INF/MANIFEST.MF +++ b/plugins/de.cognicrypt.staticanalyzer/META-INF/MANIFEST.MF @@ -21,6 +21,7 @@ Require-Bundle: org.eclipse.ui, Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Bundle-ClassPath: ., - resources/ + resources/json-simple.jar Automatic-Module-Name: de.cognicrypt.staticanalyzer -Import-Package: org.eclipse.ui.texteditor +Import-Package: org.eclipse.ui.texteditor, + org.json.simple diff --git a/plugins/de.cognicrypt.staticanalyzer/build.properties b/plugins/de.cognicrypt.staticanalyzer/build.properties index 95ad8833e..b2c69d960 100644 --- a/plugins/de.cognicrypt.staticanalyzer/build.properties +++ b/plugins/de.cognicrypt.staticanalyzer/build.properties @@ -3,5 +3,6 @@ output.. = bin/ bin.includes = plugin.xml,\ META-INF/,\ .,\ - src/,\ - experimental/ + experimental/,\ + resources/json-simple.jar +src.includes = resources/json-simple.jar diff --git a/plugins/de.cognicrypt.staticanalyzer/resources/json-simple.jar b/plugins/de.cognicrypt.staticanalyzer/resources/json-simple.jar new file mode 100644 index 0000000000000000000000000000000000000000..dfd5856d0cad81dfe7845ea6ff4d170d8064d7b0 GIT binary patch literal 23931 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 Date: Mon, 17 Feb 2020 16:16:04 +0100 Subject: [PATCH 07/15] created a checkbox in pref page. Signed-off-by: Shahrzad --- .../src/de/cognicrypt/core/Constants.java | 1 + .../staticanalyzer/StaticAnalyzerPreferences.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java index 9800d0ea3..2ec6354ea 100644 --- a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java +++ b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java @@ -529,6 +529,7 @@ public String toString() { public static final String SHOW_SECURE_OBJECTS = "de.cognicrypt.staticanalyzer.secureObjects"; public static final String CALL_GRAPH_SELECTION = "de.cognicrypt.staticanalyzer.callgraphSelection"; public static final String SELECT_CUSTOM_RULES = "de.cognicrypt.staticanalyzer.selectCustomRules"; + public static final String SUPPRESS_TLS_ERRORS = "de.cognicrypt.staticanalyzer.suppressTLSErrors"; public static final String ANALYSE_DEPENDENCIES = "de.cognicrypt.staticanalyzer.dependencyAnalysis"; diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java index 601ece52e..8eb6d8057 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java @@ -54,6 +54,7 @@ public class StaticAnalyzerPreferences extends PreferenceListener { private Button secureObjectsCheckBox; private Button analyseDependenciesCheckBox; private Button addNewRulesetButton, selectCustomRulesCheckBox; + private Button suppressTLSErrorsCheckBox; private CheckboxTableViewer table; private Combo CGSelection; @@ -85,6 +86,7 @@ private void initializeBasicValues() { secureObjectsCheckBox.setSelection(preferences.getBoolean(Constants.SHOW_SECURE_OBJECTS)); analyseDependenciesCheckBox.setSelection(preferences.getBoolean(Constants.ANALYSE_DEPENDENCIES)); selectCustomRulesCheckBox.setSelection(preferences.getBoolean(Constants.SELECT_CUSTOM_RULES)); + suppressTLSErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_TLS_ERRORS)); } private void performBasicDefaults() { @@ -93,6 +95,7 @@ private void performBasicDefaults() { preferences.setDefault(Constants.SHOW_SECURE_OBJECTS, false); preferences.setDefault(Constants.ANALYSE_DEPENDENCIES, true); preferences.setDefault(Constants.CALL_GRAPH_SELECTION, 0); + preferences.setDefault(Constants.SUPPRESS_TLS_ERRORS, false); } /*** @@ -263,6 +266,10 @@ public void widgetSelected(SelectionEvent e) { analyseDependenciesCheckBox.setText("Include dependencies to projects analysis"); analyseDependenciesCheckBox.setSelection(preferences.getBoolean(Constants.ANALYSE_DEPENDENCIES)); + suppressTLSErrorsCheckBox = new Button(staticAnalysisGroup, SWT.CHECK); + suppressTLSErrorsCheckBox.setText("Suppress Errors related to TLS protocol"); + suppressTLSErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_TLS_ERRORS)); + addNewRulesetButton = new Button(staticAnalysisGroup, SWT.PUSH); addNewRulesetButton.setText("Add ruleset"); addNewRulesetButton.addListener(SWT.Selection, new Listener() { @@ -412,6 +419,7 @@ public void setDefaultValues() { automatedAnalysisCheckBox.setSelection(preferences.getDefaultBoolean(Constants.AUTOMATED_ANALYSIS)); secureObjectsCheckBox.setSelection(preferences.getDefaultBoolean(Constants.SHOW_SECURE_OBJECTS)); analyseDependenciesCheckBox.setSelection(preferences.getDefaultBoolean(Constants.ANALYSE_DEPENDENCIES)); + suppressTLSErrorsCheckBox.setSelection(preferences.getDefaultBoolean(Constants.SUPPRESS_TLS_ERRORS)); for (Iterator itr = listOfRulesets.iterator(); itr.hasNext();) { Ruleset ruleset = (Ruleset) itr.next(); @@ -446,6 +454,7 @@ protected void storeValues() { preferences.setValue(Constants.NEVER_TYPEOF_MARKER_TYPE, neverType.getSelectionIndex()); preferences.setValue(Constants.REQUIRED_PREDICATE_MARKER_TYPE, reqPred.getSelectionIndex()); preferences.setValue(Constants.TYPESTATE_ERROR_MARKER_TYPE, typestate.getSelectionIndex()); + preferences.setValue(Constants.SUPPRESS_TLS_ERRORS, suppressTLSErrorsCheckBox.getSelection()); for (Iterator itr = listOfRulesets.iterator(); itr.hasNext();) { Ruleset ruleset = (Ruleset) itr.next(); From 6a5467093ed133f4a151dd69ff3ce0b83f819937 Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Tue, 25 Feb 2020 15:09:32 +0100 Subject: [PATCH 08/15] added note in codeGen, new button in prefpage works Signed-off-by: Shahrzad --- .../wizard/beginner/BeginnerTaskQuestionPage.java | 10 +++++++++- .../main/resources/TaskDesc/SecureCommunication.json | 2 +- .../staticanalyzer/results/ResultsCCUIListener.java | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java index 42d599fb7..c8a6454b0 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java @@ -24,6 +24,7 @@ import org.eclipse.jface.fieldassist.ControlDecoration; import org.eclipse.jface.fieldassist.FieldDecoration; import org.eclipse.jface.fieldassist.FieldDecorationRegistry; +import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.IStructuredSelection; @@ -219,6 +220,7 @@ private void createQuestionControl(final Composite parent, final Question questi new Label(parent, SWT.NONE); //added description for questions if (!question.getNote().isEmpty()) { + createNote(parent, question, true); } this.finish = true; @@ -706,6 +708,7 @@ public void widgetSelected(final SelectionEvent e) { } private Group createNote(final Composite parent, final Question question, boolean visible) { + IPreferenceStore prefStore = Activator.getDefault().getPreferenceStore(); final Group notePanel = new Group(parent, SWT.NONE); notePanel.setText("Note:"); final GridLayout gridLayout = new GridLayout(); @@ -722,7 +725,12 @@ private Group createNote(final Composite parent, final Question question, boolea note.setLayoutData(new GridData(GridData.FILL_BOTH)); String noteText = question.getNote(); if (noteText.contains("$$$")) { - noteText = noteText.split("\\$\\$\\$")[1]; + + String[] noteText1 = noteText.split("\\$\\$\\$"); + noteText = noteText1[1]; + if (!prefStore.getBoolean(Constants.SUPPRESS_TLS_ERRORS)) { + noteText = noteText + noteText1[2]; + } } note.setText(noteText); note.pack(); diff --git a/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json b/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json index 5ab7dfb73..dba45dcaf 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json +++ b/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json @@ -164,7 +164,7 @@ { "id": "0", "element": "radio", - "note": "1$$$It is highly discouraged to enable support for legacy clients. This may have grave security implications.", + "note": "1$$$It is highly discouraged to enable support for legacy clients. This may have grave security implications.$$$\nPlease note that CogniCrypt only suppress errors related to this constraint if the checkbox in preference page is selected.", "questionText": "Which clients should the server should at least support?", "answers": [ { diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java index 34cd5e7da..4c37d6800 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java @@ -128,13 +128,13 @@ public void analyzeDependenciesOnly(final Boolean depOnly) { @Override public void reportError(final AbstractError error) { IResource sourceFile = null; + IPreferenceStore prefStore = Activator.getDefault().getPreferenceStore(); if (this.depOnly) { return; } if (error instanceof ConstraintError) { ConstraintError conError = (ConstraintError) error; -// System.out.println("type of error ---------------" + ); - if (conError.getBrokenConstraint().toString().equals("VC:protocol - TLSv1.2,") && isLegacyClient()) { + if (prefStore.getBoolean(Constants.SUPPRESS_TLS_ERRORS) && conError.getBrokenConstraint().toString().equals("VC:protocol - TLSv1.2,") && isLegacyClient()) { return; } } From 293345e6dfcf96c68ca8c36adfe5883ec179a127 Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Wed, 4 Mar 2020 14:44:09 +0100 Subject: [PATCH 09/15] set dafault to true, changed msgs Signed-off-by: Shahrzad --- .../src/main/resources/TaskDesc/SecureCommunication.json | 2 +- .../cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json b/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json index dba45dcaf..641fef83a 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json +++ b/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json @@ -164,7 +164,7 @@ { "id": "0", "element": "radio", - "note": "1$$$It is highly discouraged to enable support for legacy clients. This may have grave security implications.$$$\nPlease note that CogniCrypt only suppress errors related to this constraint if the checkbox in preference page is selected.", + "note": "1$$$It is highly discouraged to enable support for legacy clients. This may have grave security implications.$$$\nCogniCrypt's analysis raises warnings when this option is selected. You can however disable such warnings for legacy configurations in the CogniCrypt preferences.", "questionText": "Which clients should the server should at least support?", "answers": [ { diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java index 8eb6d8057..0f757821e 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java @@ -95,7 +95,7 @@ private void performBasicDefaults() { preferences.setDefault(Constants.SHOW_SECURE_OBJECTS, false); preferences.setDefault(Constants.ANALYSE_DEPENDENCIES, true); preferences.setDefault(Constants.CALL_GRAPH_SELECTION, 0); - preferences.setDefault(Constants.SUPPRESS_TLS_ERRORS, false); + preferences.setDefault(Constants.SUPPRESS_TLS_ERRORS, true); } /*** @@ -267,7 +267,7 @@ public void widgetSelected(SelectionEvent e) { analyseDependenciesCheckBox.setSelection(preferences.getBoolean(Constants.ANALYSE_DEPENDENCIES)); suppressTLSErrorsCheckBox = new Button(staticAnalysisGroup, SWT.CHECK); - suppressTLSErrorsCheckBox.setText("Suppress Errors related to TLS protocol"); + suppressTLSErrorsCheckBox.setText("Suppress warnings related to legacy code generated by CogniCrypt"); suppressTLSErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_TLS_ERRORS)); addNewRulesetButton = new Button(staticAnalysisGroup, SWT.PUSH); From 07de8605b425cebf0cb147bc73c473ea63352e8d Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Thu, 2 Apr 2020 13:21:02 +0200 Subject: [PATCH 10/15] removed unused import Signed-off-by: Shahrzad --- .../java/de/cognicrypt/codegenerator/wizard/Configuration.java | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java index be4cd014c..ed48a66b4 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java @@ -23,7 +23,6 @@ import de.cognicrypt.codegenerator.question.Answer; import de.cognicrypt.codegenerator.question.Question; import de.cognicrypt.core.Constants; -import de.cognicrypt.utils.FileHelper; import de.cognicrypt.utils.Utils; import de.cognicrypt.utils.FileUtils; From b014f19351c4e27e2b1c7547a066fedff8cf6085 Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Thu, 14 May 2020 17:44:20 +0200 Subject: [PATCH 11/15] change a constant temporarily, remove xtra line, correct questiontext Signed-off-by: Shahrzad --- .../cognicrypt/codegenerator/wizard/Configuration.java | 4 ++-- .../wizard/beginner/BeginnerTaskQuestionPage.java | 3 +-- .../main/resources/TaskDesc/SecureCommunication.json | 2 +- .../src/de/cognicrypt/core/Constants.java | 6 ++++-- .../staticanalyzer/StaticAnalyzerPreferences.java | 10 +++++----- .../staticanalyzer/results/ResultsCCUIListener.java | 4 ++-- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java index ed48a66b4..5547017ae 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/Configuration.java @@ -49,9 +49,9 @@ public Configuration(Map constraints, String pathOnDisk, String taskName) JSONObject obj = new JSONObject(); this.options.forEach((question,answer) ->obj.put(question.getQuestionText(), answer.getValue())); - String jsonPath = Utils.getCurrentProject().getLocation().toOSString() + "/" +Constants.pathToInstanceFile + taskName + ".json"; + String jsonPath = Utils.getCurrentProject().getLocation().toOSString() + Constants.innerFileSeparator + taskName + Constants.JSON_EXTENSION; - File file=new File(jsonPath); + File file = new File(jsonPath); file.createNewFile(); FileWriter fileWriter = new FileWriter(file); fileWriter.write(obj.toJSONString()); diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java index c8a6454b0..0624944d3 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java @@ -220,7 +220,6 @@ private void createQuestionControl(final Composite parent, final Question questi new Label(parent, SWT.NONE); //added description for questions if (!question.getNote().isEmpty()) { - createNote(parent, question, true); } this.finish = true; @@ -728,7 +727,7 @@ private Group createNote(final Composite parent, final Question question, boolea String[] noteText1 = noteText.split("\\$\\$\\$"); noteText = noteText1[1]; - if (!prefStore.getBoolean(Constants.SUPPRESS_TLS_ERRORS)) { + if (!prefStore.getBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS)) { noteText = noteText + noteText1[2]; } } diff --git a/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json b/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json index 641fef83a..314aa548e 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json +++ b/plugins/de.cognicrypt.codegenerator/src/main/resources/TaskDesc/SecureCommunication.json @@ -165,7 +165,7 @@ "id": "0", "element": "radio", "note": "1$$$It is highly discouraged to enable support for legacy clients. This may have grave security implications.$$$\nCogniCrypt's analysis raises warnings when this option is selected. You can however disable such warnings for legacy configurations in the CogniCrypt preferences.", - "questionText": "Which clients should the server should at least support?", + "questionText": "Which clients should the server at least support?", "answers": [ { "value": "Modern Clients (since 2013)", diff --git a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java index ee9bfdac3..d0d1221ab 100644 --- a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java +++ b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java @@ -141,7 +141,6 @@ public static enum CG { public static final String NameOfTemporaryMethod = "templateUsage"; public static final String pathsForLibrariesInDevProject = "libs"; public static final String AuthorTag = "@author CogniCrypt"; - public static final String pathToInstanceFile = "savedSelections"; // Output of Code Generation public static final String AdditionalOutputFile = "Output.java"; @@ -532,7 +531,7 @@ public String toString() { public static final String SHOW_SECURE_OBJECTS = "de.cognicrypt.staticanalyzer.secureObjects"; public static final String CALL_GRAPH_SELECTION = "de.cognicrypt.staticanalyzer.callgraphSelection"; public static final String SELECT_CUSTOM_RULES = "de.cognicrypt.staticanalyzer.selectCustomRules"; - public static final String SUPPRESS_TLS_ERRORS = "de.cognicrypt.staticanalyzer.suppressTLSErrors"; + public static final String SUPPRESS_CONSTRAINT_ERRORS = "de.cognicrypt.staticanalyzer.suppressConstraintErrors"; public static final String ANALYSE_DEPENDENCIES = "de.cognicrypt.staticanalyzer.dependencyAnalysis"; @@ -611,4 +610,7 @@ public String toString() { public static final String codeTemplateFolder = "src" + Constants.innerFileSeparator + "main" + Constants.innerFileSeparator + "java" + Constants.innerFileSeparator + "de" + Constants.innerFileSeparator + "cognicrypt" + Constants.innerFileSeparator + "codegenerator" + Constants.innerFileSeparator + "crysl" + Constants.innerFileSeparator + "templates" + Constants.innerFileSeparator; + + //name of tasks + public final static String SECURE_COMMUNICATION = "SecureCommunication"; } diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java index b40b4de5b..1a020ae95 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java @@ -89,7 +89,7 @@ private void initializeBasicValues() { secureObjectsCheckBox.setSelection(preferences.getBoolean(Constants.SHOW_SECURE_OBJECTS)); analyseDependenciesCheckBox.setSelection(preferences.getBoolean(Constants.ANALYSE_DEPENDENCIES)); selectCustomRulesCheckBox.setSelection(preferences.getBoolean(Constants.SELECT_CUSTOM_RULES)); - suppressTLSErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_TLS_ERRORS)); + suppressTLSErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS)); } private void performBasicDefaults() { @@ -99,7 +99,7 @@ private void performBasicDefaults() { preferences.setDefault(Constants.SHOW_SECURE_OBJECTS, false); preferences.setDefault(Constants.ANALYSE_DEPENDENCIES, true); preferences.setDefault(Constants.CALL_GRAPH_SELECTION, 0); - preferences.setDefault(Constants.SUPPRESS_TLS_ERRORS, true); + preferences.setDefault(Constants.SUPPRESS_CONSTRAINT_ERRORS, true); } /*** @@ -275,7 +275,7 @@ public void widgetSelected(SelectionEvent e) { suppressTLSErrorsCheckBox = new Button(staticAnalysisGroup, SWT.CHECK); suppressTLSErrorsCheckBox.setText("Suppress warnings related to legacy code generated by CogniCrypt"); - suppressTLSErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_TLS_ERRORS)); + suppressTLSErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS)); addNewRulesetButton = new Button(staticAnalysisGroup, SWT.PUSH); addNewRulesetButton.setText("Add ruleset"); @@ -427,7 +427,7 @@ public void setDefaultValues() { providerDetectionCheckBox.setSelection(preferences.getDefaultBoolean(Constants.PROVIDER_DETECTION_ANALYSIS)); secureObjectsCheckBox.setSelection(preferences.getDefaultBoolean(Constants.SHOW_SECURE_OBJECTS)); analyseDependenciesCheckBox.setSelection(preferences.getDefaultBoolean(Constants.ANALYSE_DEPENDENCIES)); - suppressTLSErrorsCheckBox.setSelection(preferences.getDefaultBoolean(Constants.SUPPRESS_TLS_ERRORS)); + suppressTLSErrorsCheckBox.setSelection(preferences.getDefaultBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS)); for (Iterator itr = listOfRulesets.iterator(); itr.hasNext();) { Ruleset ruleset = (Ruleset) itr.next(); @@ -463,7 +463,7 @@ protected void storeValues() { preferences.setValue(Constants.NEVER_TYPEOF_MARKER_TYPE, neverType.getSelectionIndex()); preferences.setValue(Constants.REQUIRED_PREDICATE_MARKER_TYPE, reqPred.getSelectionIndex()); preferences.setValue(Constants.TYPESTATE_ERROR_MARKER_TYPE, typestate.getSelectionIndex()); - preferences.setValue(Constants.SUPPRESS_TLS_ERRORS, suppressTLSErrorsCheckBox.getSelection()); + preferences.setValue(Constants.SUPPRESS_CONSTRAINT_ERRORS, suppressTLSErrorsCheckBox.getSelection()); for (Iterator itr = listOfRulesets.iterator(); itr.hasNext();) { Ruleset ruleset = (Ruleset) itr.next(); diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java index 8cc1587bf..22b311273 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java @@ -134,7 +134,7 @@ public void reportError(final AbstractError error) { } if (error instanceof ConstraintError) { ConstraintError conError = (ConstraintError) error; - if (prefStore.getBoolean(Constants.SUPPRESS_TLS_ERRORS) && conError.getBrokenConstraint().toString().equals("VC:protocol - TLSv1.2,") && isLegacyClient()) { + if (prefStore.getBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS) && conError.getBrokenConstraint().toString().equals("VC:protocol - TLSv1.2,") && isLegacyClient()) { return; } } @@ -249,7 +249,7 @@ public void reportError(final AbstractError error) { @SuppressWarnings("unchecked") public Boolean isLegacyClient() { - final String path = this.currentProject.getLocation().toOSString() + "/" + Constants.pathToInstanceFile + "SecureCommunication.json"; + final String path = this.currentProject.getLocation().toOSString() + Constants.innerFileSeparator + Constants.SECURE_COMMUNICATION + Constants.JSON_EXTENSION; JSONParser parser = new JSONParser(); try { if (Files.exists(Paths.get(path))) { From 16c5effdb403620119b3f07ad017f105964be398 Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Thu, 21 May 2020 13:12:15 +0200 Subject: [PATCH 12/15] Rename a constant Signed-off-by: Shahrzad --- .../beginner/BeginnerTaskQuestionPage.java | 2 +- .../src/de/cognicrypt/core/Constants.java | 2 +- .../StaticAnalyzerPreferences.java | 16 ++++++++-------- .../results/ResultsCCUIListener.java | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java index 0624944d3..99503a88b 100644 --- a/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java +++ b/plugins/de.cognicrypt.codegenerator/src/main/java/de/cognicrypt/codegenerator/wizard/beginner/BeginnerTaskQuestionPage.java @@ -727,7 +727,7 @@ private Group createNote(final Composite parent, final Question question, boolea String[] noteText1 = noteText.split("\\$\\$\\$"); noteText = noteText1[1]; - if (!prefStore.getBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS)) { + if (!prefStore.getBoolean(Constants.SUPPRESS_LEGACYCLIENT_ERRORS)) { noteText = noteText + noteText1[2]; } } diff --git a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java index 724976c0e..bc9856e96 100644 --- a/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java +++ b/plugins/de.cognicrypt.core/src/de/cognicrypt/core/Constants.java @@ -539,7 +539,7 @@ public String toString() { public static final String SHOW_SECURE_OBJECTS = "de.cognicrypt.staticanalyzer.secureObjects"; public static final String CALL_GRAPH_SELECTION = "de.cognicrypt.staticanalyzer.callgraphSelection"; public static final String SELECT_CUSTOM_RULES = "de.cognicrypt.staticanalyzer.selectCustomRules"; - public static final String SUPPRESS_CONSTRAINT_ERRORS = "de.cognicrypt.staticanalyzer.suppressConstraintErrors"; + public static final String SUPPRESS_LEGACYCLIENT_ERRORS = "de.cognicrypt.staticanalyzer.suppressConstraintErrors"; public static final String ANALYSE_DEPENDENCIES = "de.cognicrypt.staticanalyzer.dependencyAnalysis"; diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java index 1a020ae95..bbf7bf5fc 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/StaticAnalyzerPreferences.java @@ -56,7 +56,7 @@ public class StaticAnalyzerPreferences extends PreferenceListener { private Button secureObjectsCheckBox; private Button analyseDependenciesCheckBox; private Button addNewRulesetButton, selectCustomRulesCheckBox; - private Button suppressTLSErrorsCheckBox; + private Button suppressLegacyClientErrorsCheckBox; private CheckboxTableViewer table; private Combo CGSelection; @@ -89,7 +89,7 @@ private void initializeBasicValues() { secureObjectsCheckBox.setSelection(preferences.getBoolean(Constants.SHOW_SECURE_OBJECTS)); analyseDependenciesCheckBox.setSelection(preferences.getBoolean(Constants.ANALYSE_DEPENDENCIES)); selectCustomRulesCheckBox.setSelection(preferences.getBoolean(Constants.SELECT_CUSTOM_RULES)); - suppressTLSErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS)); + suppressLegacyClientErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_LEGACYCLIENT_ERRORS)); } private void performBasicDefaults() { @@ -99,7 +99,7 @@ private void performBasicDefaults() { preferences.setDefault(Constants.SHOW_SECURE_OBJECTS, false); preferences.setDefault(Constants.ANALYSE_DEPENDENCIES, true); preferences.setDefault(Constants.CALL_GRAPH_SELECTION, 0); - preferences.setDefault(Constants.SUPPRESS_CONSTRAINT_ERRORS, true); + preferences.setDefault(Constants.SUPPRESS_LEGACYCLIENT_ERRORS, true); } /*** @@ -273,9 +273,9 @@ public void widgetSelected(SelectionEvent e) { analyseDependenciesCheckBox.setText("Include dependencies to projects analysis"); analyseDependenciesCheckBox.setSelection(preferences.getBoolean(Constants.ANALYSE_DEPENDENCIES)); - suppressTLSErrorsCheckBox = new Button(staticAnalysisGroup, SWT.CHECK); - suppressTLSErrorsCheckBox.setText("Suppress warnings related to legacy code generated by CogniCrypt"); - suppressTLSErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS)); + suppressLegacyClientErrorsCheckBox = new Button(staticAnalysisGroup, SWT.CHECK); + suppressLegacyClientErrorsCheckBox.setText("Suppress warnings related to legacy code generated by CogniCrypt"); + suppressLegacyClientErrorsCheckBox.setSelection(preferences.getBoolean(Constants.SUPPRESS_LEGACYCLIENT_ERRORS)); addNewRulesetButton = new Button(staticAnalysisGroup, SWT.PUSH); addNewRulesetButton.setText("Add ruleset"); @@ -427,7 +427,7 @@ public void setDefaultValues() { providerDetectionCheckBox.setSelection(preferences.getDefaultBoolean(Constants.PROVIDER_DETECTION_ANALYSIS)); secureObjectsCheckBox.setSelection(preferences.getDefaultBoolean(Constants.SHOW_SECURE_OBJECTS)); analyseDependenciesCheckBox.setSelection(preferences.getDefaultBoolean(Constants.ANALYSE_DEPENDENCIES)); - suppressTLSErrorsCheckBox.setSelection(preferences.getDefaultBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS)); + suppressLegacyClientErrorsCheckBox.setSelection(preferences.getDefaultBoolean(Constants.SUPPRESS_LEGACYCLIENT_ERRORS)); for (Iterator itr = listOfRulesets.iterator(); itr.hasNext();) { Ruleset ruleset = (Ruleset) itr.next(); @@ -463,7 +463,7 @@ protected void storeValues() { preferences.setValue(Constants.NEVER_TYPEOF_MARKER_TYPE, neverType.getSelectionIndex()); preferences.setValue(Constants.REQUIRED_PREDICATE_MARKER_TYPE, reqPred.getSelectionIndex()); preferences.setValue(Constants.TYPESTATE_ERROR_MARKER_TYPE, typestate.getSelectionIndex()); - preferences.setValue(Constants.SUPPRESS_CONSTRAINT_ERRORS, suppressTLSErrorsCheckBox.getSelection()); + preferences.setValue(Constants.SUPPRESS_LEGACYCLIENT_ERRORS, suppressLegacyClientErrorsCheckBox.getSelection()); for (Iterator itr = listOfRulesets.iterator(); itr.hasNext();) { Ruleset ruleset = (Ruleset) itr.next(); diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java index 6ba9ca4cf..779a0f4e6 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java @@ -132,7 +132,7 @@ public void reportError(final AbstractError error) { } if (error instanceof ConstraintError) { ConstraintError conError = (ConstraintError) error; - if (prefStore.getBoolean(Constants.SUPPRESS_CONSTRAINT_ERRORS) && conError.getBrokenConstraint().toString().equals("VC:protocol - TLSv1.2,") && isLegacyClient()) { + if (prefStore.getBoolean(Constants.SUPPRESS_LEGACYCLIENT_ERRORS) && conError.getBrokenConstraint().toString().equals("VC:protocol - TLSv1.2,") && isLegacyClient()) { return; } } From a8cc7232c33a1712c37838399dadd731134595ba Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Thu, 21 May 2020 13:51:36 +0200 Subject: [PATCH 13/15] added unmerged files --- .../reader/StateMachineGraphBuilder.java | 28 +++++++++++++++++++ .../cryslhandler/SMGBuilderTests.java | 7 +++++ 2 files changed, 35 insertions(+) diff --git a/plugins/de.cognicrypt.crysl.handler/src/main/java/de/cognicrypt/crysl/reader/StateMachineGraphBuilder.java b/plugins/de.cognicrypt.crysl.handler/src/main/java/de/cognicrypt/crysl/reader/StateMachineGraphBuilder.java index 401d613d8..02347618f 100644 --- a/plugins/de.cognicrypt.crysl.handler/src/main/java/de/cognicrypt/crysl/reader/StateMachineGraphBuilder.java +++ b/plugins/de.cognicrypt.crysl.handler/src/main/java/de/cognicrypt/crysl/reader/StateMachineGraphBuilder.java @@ -201,6 +201,25 @@ private StateNode process(final Expression curLevel, final int level, final Mult if ("|".equals(orderOp)) { leftOvers.put(level + 1, new HashMap.SimpleEntry<>(orderOp, prevNode)); prevNode = process(right, level + 1, leftOvers, leftPrev); + + if ((rightElOp != null && ("+".equals(rightElOp) || "*".equals(rightElOp))) && + leftElOp != null && ("+".equals(leftElOp) || "*".equals(leftElOp))) { + final StateNode finPrevNode = prevNode; + addRegularEdge(result.getAllTransitions().parallelStream().filter(e -> leftPrev.equals(e.from()) && rightPrev.equals(e.to())).findFirst().get().getLabel(), prevNode, rightPrev, true); + addRegularEdge(result.getAllTransitions().parallelStream().filter(e -> leftPrev.equals(e.from()) && finPrevNode.equals(e.to())).findFirst().get().getLabel(), rightPrev, prevNode, true); + + List collect = result.getAllTransitions().parallelStream().filter(e -> e.from().equals(leftPrev) && !leftPrev.equals(e.to()) && !rightPrev.equals(e.to()) && !finPrevNode.equals(e.to())).map(e -> e.to()).collect(Collectors.toList()); + collect.stream().forEach(e -> { + TransitionEdge edge = fetchEdge(leftPrev, e); + if (fetchEdge(e, rightPrev) != null) { + addRegularEdge(edge.getLabel(), finPrevNode, e, true); + } else if (fetchEdge(e, finPrevNode) != null) { + addRegularEdge(edge.getLabel(), rightPrev, e, true); + } + + }); + } + } else { prevNode = process(right, level + 1, leftOvers, prevNode); } @@ -474,5 +493,14 @@ private Expression getLeftMostChild(Expression ex) { } return null; } + + private TransitionEdge fetchEdge(StateNode start, StateNode goal) { + Optional edgeOpt = result.getAllTransitions().parallelStream().filter(e -> e.from().equals(start) && e.to().equals(goal)).findFirst(); + if (edgeOpt.isPresent()) { + return edgeOpt.get(); + } else { + return null; + } + } } diff --git a/plugins/de.cognicrypt.crysl.handler/src/test/java/de/cognicrypt/cryslhandler/SMGBuilderTests.java b/plugins/de.cognicrypt.crysl.handler/src/test/java/de/cognicrypt/cryslhandler/SMGBuilderTests.java index e55037b13..748da8873 100644 --- a/plugins/de.cognicrypt.crysl.handler/src/test/java/de/cognicrypt/cryslhandler/SMGBuilderTests.java +++ b/plugins/de.cognicrypt.crysl.handler/src/test/java/de/cognicrypt/cryslhandler/SMGBuilderTests.java @@ -135,6 +135,13 @@ public void mockCipherRule() { expectedUsagePattern.addEdge(new TransitionEdge(Arrays.asList(new CrySLMethod[] {aep}), four, four)); expectedUsagePattern.addEdge(new TransitionEdge(Arrays.asList(new CrySLMethod[] {adp, afp}), four, three)); + + expectedUsagePattern.addEdge(new TransitionEdge(Arrays.asList(new CrySLMethod[] {acp}), three, two)); + + expectedUsagePattern.addEdge(new TransitionEdge(Arrays.asList(new CrySLMethod[] {adp}), two, three)); + expectedUsagePattern.addEdge(new TransitionEdge(Arrays.asList(new CrySLMethod[] {aep}), two, four)); + + expectedUsagePattern.addEdge(new TransitionEdge(Arrays.asList(new CrySLMethod[] {aep}), three, four)); Assert.assertEquals(expectedUsagePattern.getAllTransitions(), readRuleFromFuleName("Testrule3").getUsagePattern().getAllTransitions()); } From 321611b9d45de6ef3883b372a579e163592a4a9c Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Fri, 29 May 2020 17:28:37 +0200 Subject: [PATCH 14/15] removed extra JRE in classpath Signed-off-by: Shahrzad --- plugins/de.cognicrypt.codegenerator/.classpath | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/de.cognicrypt.codegenerator/.classpath b/plugins/de.cognicrypt.codegenerator/.classpath index 70c1a6ee1..620e33854 100644 --- a/plugins/de.cognicrypt.codegenerator/.classpath +++ b/plugins/de.cognicrypt.codegenerator/.classpath @@ -38,11 +38,6 @@ - - - - - From a47d0e2df3ce3494cb087d236976f63c24a058fb Mon Sep 17 00:00:00 2001 From: Shahrzad Date: Tue, 2 Jun 2020 11:24:09 +0200 Subject: [PATCH 15/15] changed to activators log error Signed-off-by: Shahrzad --- .../cognicrypt/staticanalyzer/results/ResultsCCUIListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java index 779a0f4e6..3ccfc2c8d 100644 --- a/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java +++ b/plugins/de.cognicrypt.staticanalyzer/src/de/cognicrypt/staticanalyzer/results/ResultsCCUIListener.java @@ -262,7 +262,7 @@ public Boolean isLegacyClient() { } } } catch (ParseException | IOException e2) { - e2.printStackTrace(); + Activator.getDefault().logError(e2); } return false; }