add support for analyzing the current file with Dscanner

This commit is contained in:
Basile Burg 2016-04-16 15:26:10 +02:00
parent 6810fe0b68
commit 6564b0c98c
4 changed files with 92 additions and 11 deletions

View File

@ -1,21 +1,21 @@
inherited CEInfoWidget: TCEInfoWidget
Left = 713
Height = 457
Height = 502
Top = 245
Width = 411
BorderIcons = [biSystemMenu, biMinimize, biMaximize]
Caption = 'About'
ClientHeight = 457
ClientHeight = 502
ClientWidth = 411
inherited Back: TPanel
Height = 457
Height = 502
Width = 411
ClientHeight = 457
ClientHeight = 502
ClientWidth = 411
inherited Content: TPanel
Height = 457
Height = 502
Width = 411
ClientHeight = 457
ClientHeight = 502
ClientWidth = 411
object GroupBox1: TGroupBox[0]
Left = 4
@ -46,18 +46,18 @@ inherited CEInfoWidget: TCEInfoWidget
end
object GroupBox2: TGroupBox[1]
Left = 4
Height = 340
Height = 385
Top = 113
Width = 403
Align = alClient
BorderSpacing.Around = 4
Caption = 'tools status'
ClientHeight = 310
ClientHeight = 355
ClientWidth = 399
TabOrder = 1
object boxTools: TScrollBox
Left = 4
Height = 302
Height = 347
Top = 4
Width = 391
HorzScrollBar.Page = 1

View File

@ -176,6 +176,10 @@ begin
fIsModal := true;
fIsDockable := false;
//
toolItem := TToolInfo.Construct(self, tikOptional, 'dscanner',
'optional, the D source code analyzer');
toolItem.Parent := boxTools;
toolItem.ReAlign;
toolItem := TToolInfo.Construct(self, tikOptional, 'dfmt',
'optional, the D source code formater, needed by the Dfmt commander widget');
toolItem.Parent := boxTools;

View File

@ -2188,6 +2188,9 @@ object CEMainForm: TCEMainForm
object MenuItem59: TMenuItem
Caption = '-'
end
object MenuItem78: TMenuItem
Action = actFileDscanner
end
object MenuItem60: TMenuItem
Action = actFileOpenContFold
Bitmap.Data = {
@ -4252,11 +4255,18 @@ object CEMainForm: TCEMainForm
OnExecute = actFileSaveCopyAsExecute
OnUpdate = updateDocumentBasedAction
end
object actFileDscanner: TAction
Category = 'File'
Caption = 'Verify with Dscanner'
ImageIndex = 35
OnExecute = actFileDscannerExecute
OnUpdate = updateDocumentBasedAction
end
end
object imgList: TImageList
left = 64
Bitmap = {
4C69230000001000000010000000008F4E00008C4AB000965DFF00935AFF0093
4C69240000001000000010000000008F4E00008C4AB000965DFF00935AFF0093
59FF009359FF009359FF009359FF009359FF00945AFF008743FF008945FF008A
49A8FFFFFF00008F4E00008F4F00008E4E00008A47FF66E2D0FF62DDCAFF62DD
C8FF62DDC8FF62DDC8FF62DDC8FF62DDC8FF62DDC9FF61E0CAFF62DEC8FF3ABA
@ -5376,7 +5386,39 @@ object CEMainForm: TCEMainForm
0D780D0D0D780D0D0D780D0D0D780D0D0D780D0D0D780D0D0D780C7602E42BDF
1AFF0C7602E40B0B0B640000001E00000000000000170000001A0000001A0000
001A0000001A0000001A0000001A0000001A0000001A0000001A0669009E0566
00D10669009E0000001700000000
00D10669009E00000017000000002178AD002178AD002178AD002178AD002178
AD002077AC001E75AA001B73A8FF1E75AA002077AC002178AD002178AD002178
AD002178AD002178AD002178AD002178AD002178AD002178AD002178AD002177
AC001E75AA00186EA4FFD0F9FFFF186EA3FF1E75A9002177AC002178AD002178
AD002178AD002178AD002178AD002178AD002178AD002178AD002178AC001F75
AA001B6FA3FF83DCFFFF16B2FFFF82DBFFFF1A6EA2FF1E74A9002177AC002178
AD002178AD002178AD002178AD002178AD002178AD002177AC001E75AA001B6F
A3FF52B8F1FF22B9FFFF22BAFFFF21B8FFFF81DDFFFF1A6DA2FF1E74A9002177
AC002178AD002178AD002178AD002178AD002177AC001E74A9001A6EA2FF7EDF
FFFF29BBFFFF2AC0FFFF3C1808FF2AC0FFFF27BAFFFF7DDEFFFF1A6DA2FF1E74
A9002177AC002178AD002178AD002077AC001E74A9001A6DA2FF7CDFFFFF2CBD
FFFF2FBEFFFF2FC6FFFF492A1CFF2FC6FFFF2EBEFFFF2CBDFFFF7CDFFFFF1A6D
A2FF1E74A9002077AC002178AD001E75AA00196DA3FF78E0FFFF32C1FFFF34C0
FFFF35C2FFFF34CAFFFF563529FF34CAFFFF35C2FFFF34C0FFFF32C1FFFF78E0
FFFF196DA4FF1F75AB002177AE001C73A8FF9BF5FFFF36C8FFFF39C4FFFF3BC4
FFFF3BC6FFFF39CCFFFF643F30FF39CCFFFF3BC6FFFF3BC4FFFF39C4FFFF38C7
FFFF9EF2FFFF206FB1FF2473B50000000033196DA3FF6FE2FFFF3ECCFFFF3FC9
FFFF3FC9FFFF3FCEFFFF3FD3FFFF40CEFFFF3FCAFFFF3FC8FFFF40CAFFFF73DC
FFFF008231FF00883CFF00A457002077AC00000000331B6DA3FF4EC1F0FF45D1
FFFF45CEFFFF47D4FFFF31351CFF33C1DAFF48D0FFFF47CFFFFF48C2D9FF0096
48FF00E095FF00E49CFF009F5DFF2178AD002177AC00000000331B6DA3FF6BE6
FFFF4DD6FFFF52D8FFFF008536FF008334FF55D7FFFF71E1FFFF007E32FF00DF
95FF00E09AFF009C5BFF000000332178AD002178AD002177AC00000000331C6E
A5FF51C7F9FF00822CFF00E394FF00E196FF007F38FF007F38FF00E096FF00E1
9BFF008445FF0000003300A160002178AD002178AD002178AD002177AC000000
00331D6FA8FF6DEDFFFF008234FF00E096FF00DE97FF00DE97FF00E29BFF0086
46FF0000003300A2610000A160002178AD002178AD002178AD002178AD002177
AD00000000331E6EAAFF6FF0FFFF00843CFF00E29BFF00E39CFF008647FF0000
0033008C4D0000A3620000A160002178AD002178AD002178AD002178AD002178
AD002177AC00000000332270B3FF00000033008A48FF008A4AFF00000033008E
4E00008D4D0000A3620000A16000000000000000000000000000000000000000
0000000000000000000000000033000000000000003300000033000000000000
0000000000000000000000000000
}
end
object ApplicationProperties1: TApplicationProperties

View File

@ -39,6 +39,7 @@ type
actFileSaveCopyAs: TAction;
actFileCompile: TAction;
actFileRun: TAction;
actFileDscanner: TAction;
actProjNewDubJson: TAction;
actProjNewNative: TAction;
actSetRunnableSw: TAction;
@ -140,6 +141,7 @@ type
MenuItem75: TMenuItem;
MenuItem76: TMenuItem;
MenuItem77: TMenuItem;
MenuItem78: TMenuItem;
mnuLayout: TMenuItem;
mnuItemMruFile: TMenuItem;
mnuItemMruProj: TMenuItem;
@ -151,6 +153,7 @@ type
MenuItem8: TMenuItem;
MenuItem9: TMenuItem;
procedure actFileCompileExecute(Sender: TObject);
procedure actFileDscannerExecute(Sender: TObject);
procedure actFileRunExecute(Sender: TObject);
procedure actFileSaveCopyAsExecute(Sender: TObject);
procedure actProjNewDubJsonExecute(Sender: TObject);
@ -2189,6 +2192,38 @@ begin
compileRunnable(false);
end;
procedure TCEMainForm.actFileDscannerExecute(Sender: TObject);
var
lst: TStringList;
prc: TProcess;
pth: string;
msg: string;
begin
if fDoc.isNil then
exit;
if fDoc.isTemporary and fDoc.modified then
fDoc.saveTempFile;
pth := exeFullName('dscanner' + exeExt);
if not pth.fileExists then
exit;
prc := TProcess.Create(nil);
lst := TStringList.Create;
try
prc.Executable:=pth;
prc.Options:= [poUsePipes];
prc.ShowWindow:= swoHIDE;
prc.Parameters.Add(fDoc.fileName);
prc.Parameters.Add('-S');
prc.Execute;
processOutputToStrings(prc, lst);
for msg in lst do
fMsgs.message(msg, fDoc, amcEdit, amkAuto);
finally
prc.Free;
lst.Free;
end;
end;
procedure TCEMainForm.actFileRunExecute(Sender: TObject);
var
fname: string;