/// <summary> /// <see cref="ComUsageScout"/> クラスの新しいインスタンスを作成します。 /// </summary> public ComUsageScout() { /// COM調査項目の追加 void addMethod(string comObjectName) { var method = new NumberOfComInstanceCreationScoutingMethod() { ComObjectName = comObjectName }; ScoutingMethod.Add(key: $"COM({comObjectName})", value: method); } /// 調査項目の定義 addMethod("Access.Application"); addMethod("Excel.Application"); addMethod("Shell.Application"); addMethod("basp21"); addMethod("basp21.FTP"); addMethod("ADODB.Command"); addMethod("ADODB.Connection"); addMethod("ADODB.Recordset"); addMethod("WScript.Network"); addMethod("Scripting.FileSystemObject"); }
public void Test_Do_ReturnsNumber_WhenFileDoesNotHaveComInstanceCreation() { // テスト用のファイルを用意 var fileName = MethodBase.GetCurrentMethod().Name; var filePath = Path.Combine(this.DirectoryPath, fileName); var fileEncoding = Encoding.GetEncoding("shift-jis"); using (var stream = File.Create(filePath)) using (var writer = new StreamWriter(stream, fileEncoding)) { var script = @" MsgBox ""Hello World"" "; writer.Write(script); writer.Flush(); } // テスト対象の処理を実行 var method = new NumberOfComInstanceCreationScoutingMethod() { ComObjectName = "ComClass1" }; var actual = method.Do(new ScoutingClue() { FilePath = filePath, Encoding = fileEncoding }); // テスト結果を検証 Assert.AreEqual("0", actual); }
public void Test_Do_ReturnsZero_WhenFileIsBinary() { // テスト用のファイルを用意 var fileName = MethodBase.GetCurrentMethod().Name; var filePath = Path.Combine(this.DirectoryPath, fileName); using (var stream = File.Create(filePath)) { stream.Write(new byte[] { 0x0 }, 0, 1); stream.Flush(); } // テスト対象の処理を実行 var method = new NumberOfComInstanceCreationScoutingMethod(); var actual = method.Do(new ScoutingClue() { FilePath = filePath, Encoding = null, }); // テスト結果を検証 Assert.AreEqual("0", actual); }
public void Test_Do_ReturnsNumber_WhenFileHasComInstanceCreation() { // テスト用のファイルを用意 var fileName = MethodBase.GetCurrentMethod().Name; var filePath = Path.Combine(this.DirectoryPath, fileName); var fileEncoding = Encoding.GetEncoding("shift-jis"); using (var stream = File.Create(filePath)) using (var writer = new StreamWriter(stream, fileEncoding)) { var script = @" Dim a As Object Dim b As Object Dim c As Object Set a = CreateObject(""ComClass1"") ' カウント対象1 Set b = CreateObject(""ComClass2"") Set c = CreateObject(""ComClass3"") Dim d As Object Dim e As Object Dim f As Object Set d = CreateObject(""cOMcLASS1"") ' カウント対象2 Set e = CreateObject(""cOMcLASS2"") Set f = CreateObject(""cOMcLASS3"") Dim h As Object Dim i As Object Dim j As Object Set h = CreateObject(""comclass1"") ' カウント対象3 Set i = CreateObject(""comclass2"") Set j = CreateObject(""comclass3"") Dim k As Object Dim l As Object Dim m As Object Set k = CreateObject(""COMCLASS1"") ' カウント対象4 Set l = CreateObject(""COMCLASS2"") Set m = CreateObject(""COMCLASS3"") Dim o As Object Dim p As Object Dim q As Object Set o=CreateObject(""ComClass1"") ' カウント対象5 Set p=CreateObject(""ComClass2"") Set q=CreateObject(""ComClass3"") 'Dim r As Object 'Dim s As Object 'Dim t As Object 'Set r = CreateObject(""ComClass1"") ' 非カウント対象 'Set s = CreateObject(""ComClass2"") 'Set t = CreateObject(""ComClass3"") Dim u As Object Dim v As Object Dim w As Object Set u = WScript.CreateObject(""ComClass1"") ' カウント対象6 Set v = WScript.CreateObject(""ComClass2"") Set w = WScript.CreateObject(""ComClass3"") "; writer.Write(script); writer.Flush(); } // テスト対象の処理を実行 var method = new NumberOfComInstanceCreationScoutingMethod() { ComObjectName = "ComClass1" }; var actual = method.Do(new ScoutingClue() { FilePath = filePath, Encoding = fileEncoding }); // テスト結果を検証 Assert.AreEqual("6", actual); }