From 70537efa1244a90e9794560ba24b1898b1dd42c5 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Fri, 7 Jul 2017 15:10:58 +0200 Subject: [PATCH] Add menu item to D-scan the whole project, close #167 --- src/ce_main.lfm | 10 ++++++++++ src/ce_main.pas | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/ce_main.lfm b/src/ce_main.lfm index bbf9b730..9b3873f5 100644 --- a/src/ce_main.lfm +++ b/src/ce_main.lfm @@ -3508,6 +3508,9 @@ object CEMainForm: TCEMainForm 8FFFB4A191FFB6A393FFB5A292FFB4A191FFBBA99AFFB8A696B0 } end + object MenuItem108: TMenuItem + Action = actProjDscan + end object MenuItem40: TMenuItem Caption = '-' end @@ -5327,6 +5330,13 @@ object CEMainForm: TCEMainForm OnExecute = actFileCloseAllExecute OnUpdate = updateDocumentBasedAction end + object actProjDscan: TAction + Category = 'Project' + Caption = 'Verify project with Dscanner' + ImageIndex = 35 + OnExecute = actProjDscanExecute + OnUpdate = updateProjectBasedAction + end end object imgList: TImageList left = 64 diff --git a/src/ce_main.pas b/src/ce_main.pas index 413e1d41..b0694b69 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -109,6 +109,7 @@ type actFileMetricsHalstead: TAction; actFileCloseAllOthers: TAction; actFileCloseAll: TAction; + actProjDscan: TAction; actProjGroupCompileCustomSync: TAction; actProjGroupClose: TAction; actProjGroupCompileSync: TAction; @@ -159,6 +160,7 @@ type MenuItem105: TMenuItem; MenuItem106: TMenuItem; MenuItem107: TMenuItem; + MenuItem108: TMenuItem; MenuItem77: TMenuItem; mnuOpts: TMenuItem; mnuItemMruGroup: TMenuItem; @@ -275,6 +277,7 @@ type procedure actFileSaveCopyAsExecute(Sender: TObject); procedure actNewGroupExecute(Sender: TObject); procedure actProjAddToGroupExecute(Sender: TObject); + procedure actProjDscanExecute(Sender: TObject); procedure actProjGroupCompileCustomSyncExecute(Sender: TObject); procedure actProjGroupCompileExecute(Sender: TObject); procedure actProjGroupCompileSyncExecute(Sender: TObject); @@ -2934,7 +2937,7 @@ begin processOutputToStrings(prc, lst); while prc.Running do; for msg in lst do - fMsgs.message(msg, fDoc, amcEdit, amkAuto); + fMsgs.message(msg, fDoc, amcEdit, amkWarn); finally prc.Free; lst.Free; @@ -3510,6 +3513,43 @@ begin dlgOkInfo(fProject.getCommandLine, 'Compilation command line'); end; +procedure TCEMainForm.actProjDscanExecute(Sender: TObject); +var + lst: TStringList; + prc: TProcess; + pth: string; + msg: string; + i: integer; +begin + if fProject = nil then + exit; + + pth := exeFullName('dscanner' + exeExt); + if not pth.fileExists then + exit; + prc := TProcess.Create(nil); + lst := TStringList.Create; + try + prc.Executable:=pth; + prc.Options := [poUsePipes, poStderrToOutPut {$IFDEF WINDOWS}, poNewConsole{$ENDIF}]; + prc.ShowWindow:= swoHIDE; + prc.Parameters.Add(fDoc.fileName); + prc.Parameters.Add('-S'); + if not fDscanUnittests then + prc.Parameters.Add('--skipTests'); + for i := 0 to fProject.sourcesCount-1 do + prc.Parameters.Add(fProject.sourceAbsolute(i)); + prc.Execute; + processOutputToStrings(prc, lst); + while prc.Running do; + for msg in lst do + fMsgs.message(msg, fProject, amcProj, amkWarn); + finally + prc.Free; + lst.Free; + end; +end; + procedure TCEMainForm.actProjOpenGroupExecute(Sender: TObject); begin if fProjectGroup.groupModified then