diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 95b24b9..0f24ae0 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -4,8 +4,6 @@ - - \ No newline at end of file diff --git a/src/main/java/de/fraunhofer/iem/icognicrypt/actions/RunCogniCryptAction.java b/src/main/java/de/fraunhofer/iem/icognicrypt/actions/RunCogniCryptAction.java index a11d81d..ea12906 100644 --- a/src/main/java/de/fraunhofer/iem/icognicrypt/actions/RunCogniCryptAction.java +++ b/src/main/java/de/fraunhofer/iem/icognicrypt/actions/RunCogniCryptAction.java @@ -27,6 +27,7 @@ public class RunCogniCryptAction extends CogniCryptAction implements DumbAware private static final Logger logger = Logger.getInstance(RunCogniCryptAction.class); private final IPersistableCogniCryptSettings _settings; private final IdeType _ideType; + public static boolean EnabledFlag= true; public RunCogniCryptAction() { @@ -49,6 +50,12 @@ public void actionPerformed(@NotNull AnActionEvent e) Iterable files = GetFilesToAnalyze(project); // TODO: Re-Enable + if(e.getPresentation().isEnabled()){ + e.getPresentation().setEnabled(false); + EnabledFlag=false; + update(e); + } + /* if (files == null || !Linq.any(files)) { @@ -87,6 +94,14 @@ private Iterable GetFilesToAnalyze(Project project) } return Collections.EMPTY_LIST; } + public static void SetFlag(boolean b){ + EnabledFlag=b; + } + @Override + public void update(AnActionEvent e) { + e.getPresentation().setEnabled(EnabledFlag); + } + } diff --git a/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/AnalysisListenerService.java b/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/AnalysisListenerService.java index bbd55cc..dfc8598 100644 --- a/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/AnalysisListenerService.java +++ b/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/AnalysisListenerService.java @@ -21,6 +21,7 @@ import crypto.interfaces.ISLConstraint; import crypto.rules.CrySLPredicate; import de.fraunhofer.iem.icognicrypt.Constants; +import de.fraunhofer.iem.icognicrypt.actions.RunCogniCryptAction; import de.fraunhofer.iem.icognicrypt.core.Language.JvmClassNameUtils; import de.fraunhofer.iem.icognicrypt.results.CogniCryptError; import de.fraunhofer.iem.icognicrypt.results.IResultProvider; @@ -29,7 +30,6 @@ import soot.SootClass; import sync.pds.solver.nodes.Node; import typestate.TransitionFunction; - import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -43,6 +43,7 @@ class AnalysisListenerService extends CrySLAnalysisListener implements Disposabl private static final Logger logger = LoggerFactory.getLogger(AnalysisListenerService.class); private final Project _project; private IResultProvider _resultProvider; + public static boolean EnabledFlag; private final List _sourceCodeFiles; @@ -54,6 +55,7 @@ private AnalysisListenerService(Project project, IResultProvider resultProvider) @Override public void beforeAnalysis() { + EnabledFlag= false; _resultProvider.RemoveAllResults(); _sourceCodeFiles.clear(); @@ -66,6 +68,7 @@ public void afterAnalysis() { //After analysis completes, restart code analyzer so that error markers can be updated //for (Project project : ProjectManager.getInstance().getOpenProjects()) DaemonCodeAnalyzer.getInstance(_project).restart(); + RunCogniCryptAction.SetFlag(true); } @Override diff --git a/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/CogniCryptAndroidStudioAnalysisTask.java b/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/CogniCryptAndroidStudioAnalysisTask.java index 57dd954..4095515 100644 --- a/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/CogniCryptAndroidStudioAnalysisTask.java +++ b/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/CogniCryptAndroidStudioAnalysisTask.java @@ -15,6 +15,7 @@ import crypto.analysis.errors.IncompleteOperationError; import de.fraunhofer.iem.crypto.CogniCryptAndroidAnalysis; import de.fraunhofer.iem.icognicrypt.Constants; +import de.fraunhofer.iem.icognicrypt.actions.RunCogniCryptAction; import de.fraunhofer.iem.icognicrypt.core.Language.JvmClassNameUtils; import de.fraunhofer.iem.icognicrypt.results.CogniCryptError; import de.fraunhofer.iem.icognicrypt.results.IResultProvider; @@ -111,6 +112,7 @@ public void onFinished() _analysisQueue = null; _stopWatch = null; _resultProvider = null; + RunCogniCryptAction.SetFlag(true); } @Override diff --git a/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/IntelliJAnalysis.java b/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/IntelliJAnalysis.java index 8ccafad..1017509 100644 --- a/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/IntelliJAnalysis.java +++ b/src/main/java/de/fraunhofer/iem/icognicrypt/analysis/IntelliJAnalysis.java @@ -86,8 +86,8 @@ public static void RunIntelliJAnalysis(Project project, Iterable filesToAn Task analysis = new JavaProjectAnalysisTask(modulePath, Joiner.on(File.pathSeparator).join(classpath), settings.getRulesDirectory()); ProgressManager.getInstance().run(analysis); - */ + } ProgressManager.getInstance().run(new JavaProjectAnalysisTask(project, modulePaths diff --git a/src/main/java/de/fraunhofer/iem/icognicrypt/results/ui/CogniCryptResultWindow.java b/src/main/java/de/fraunhofer/iem/icognicrypt/results/ui/CogniCryptResultWindow.java index b0a377d..0901027 100644 --- a/src/main/java/de/fraunhofer/iem/icognicrypt/results/ui/CogniCryptResultWindow.java +++ b/src/main/java/de/fraunhofer/iem/icognicrypt/results/ui/CogniCryptResultWindow.java @@ -39,14 +39,14 @@ public CogniCryptResultWindow(ToolWindow toolWindow, Project project) IResultProvider service = ServiceManager.getService(project, IResultProvider.class); service.Subscribe(_tableModel); - - for (Set errorSet : service.GetErrors().values()) - { - for (CogniCryptError error : errorSet) - { - _tableModel.AddError(error); - } - } +// ToolWindow clearing when starting IDE +// for (Set errorSet : service.GetErrors().values()) +// { +// for (CogniCryptError error : errorSet) +// { +// _tableModel.AddError(error); +// } +// } } @Override diff --git a/src/main/java/de/fraunhofer/iem/icognicrypt/ui/NotificationProvider.java b/src/main/java/de/fraunhofer/iem/icognicrypt/ui/NotificationProvider.java index 32e9604..ca12a47 100644 --- a/src/main/java/de/fraunhofer/iem/icognicrypt/ui/NotificationProvider.java +++ b/src/main/java/de/fraunhofer/iem/icognicrypt/ui/NotificationProvider.java @@ -1,11 +1,18 @@ package de.fraunhofer.iem.icognicrypt.ui; +import com.intellij.ide.DataManager; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; +import com.intellij.openapi.project.Project; +import static de.fraunhofer.iem.icognicrypt.IdeSupport.projects.ProjectHelper.GetActiveProject; + public class NotificationProvider { + public static void Warn(String message) { ShowNotification(message, NotificationType.WARNING); @@ -24,6 +31,13 @@ public static void ShowError(String message) private static void ShowNotification(String message, NotificationType type) { Notification notification = new Notification("CogniCrypt", "CogniCrypt Message", message, type); - Notifications.Bus.notify(notification); + Project project= GetActiveProject(); + DataContext d = DataManager.getInstance().getDataContext(); + Project project1= d.getData(PlatformDataKeys.PROJECT); + if(project==project1) { + Notifications.Bus.notify(notification, project); + } + } + } diff --git a/src/main/java/de/fraunhofer/iem/icognicrypt/ui/multipleOutputFilesDialog/MultipleOutputFilesDialog.form b/src/main/java/de/fraunhofer/iem/icognicrypt/ui/multipleOutputFilesDialog/MultipleOutputFilesDialog.form index 21877a7..1988181 100644 --- a/src/main/java/de/fraunhofer/iem/icognicrypt/ui/multipleOutputFilesDialog/MultipleOutputFilesDialog.form +++ b/src/main/java/de/fraunhofer/iem/icognicrypt/ui/multipleOutputFilesDialog/MultipleOutputFilesDialog.form @@ -91,7 +91,9 @@ - + + +