Skip to content

Commit ff3ed2d

Browse files
committed
C#: Autobuilder extracts XML for .csproj and .props files.
1 parent 3de1f3b commit ff3ed2d

File tree

2 files changed

+50
-16
lines changed

2 files changed

+50
-16
lines changed

csharp/extractor/Semmle.Autobuild.Tests/BuildScripts.cs

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -357,14 +357,16 @@ public void TestDefaultCSharpAutoBuilder()
357357
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --auto dotnet build --no-incremental /p:UseSharedCompilation=false"] = 0;
358358
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
359359
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions config"] = 0;
360+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
361+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions props"] = 0;
360362
Actions.FileExists["csharp.log"] = true;
361363
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
362364
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
363365
Actions.EnumerateFiles[@"C:\Project"] = "foo.cs\nbar.cs";
364366
Actions.EnumerateDirectories[@"C:\Project"] = "";
365367

366368
var autobuilder = CreateAutoBuilder("csharp", true);
367-
TestAutobuilderScript(autobuilder, 0, 6);
369+
TestAutobuilderScript(autobuilder, 0, 8);
368370
}
369371

370372
[Fact]
@@ -376,14 +378,16 @@ public void TestLinuxCSharpAutoBuilder()
376378
Actions.RunProcess[@"C:\odasa\tools\odasa index --auto dotnet build --no-incremental /p:UseSharedCompilation=false"] = 0;
377379
Actions.RunProcess[@"C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
378380
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions config"] = 0;
381+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
382+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions props"] = 0;
379383
Actions.FileExists["csharp.log"] = true;
380384
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
381385
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
382386
Actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.cs";
383387
Actions.EnumerateDirectories[@"C:\Project"] = "";
384388

385389
var autobuilder = CreateAutoBuilder("csharp", false);
386-
TestAutobuilderScript(autobuilder, 0, 6);
390+
TestAutobuilderScript(autobuilder, 0, 8);
387391
}
388392

389393
[Fact]
@@ -487,14 +491,16 @@ public void TestLinuxBuildlessExtractionSuccess()
487491
Actions.RunProcess[@"C:\odasa\tools\csharp\Semmle.Extraction.CSharp.Standalone --references:."] = 0;
488492
Actions.RunProcess[@"C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
489493
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions config"] = 0;
494+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
495+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions props"] = 0;
490496
Actions.FileExists["csharp.log"] = true;
491497
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
492498
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
493499
Actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.sln";
494500
Actions.EnumerateDirectories[@"C:\Project"] = "";
495501

496502
var autobuilder = CreateAutoBuilder("csharp", false, buildless:"true");
497-
TestAutobuilderScript(autobuilder, 0, 3);
503+
TestAutobuilderScript(autobuilder, 0, 5);
498504
}
499505

500506
[Fact]
@@ -519,14 +525,16 @@ public void TestLinuxBuildlessExtractionSolution()
519525
Actions.RunProcess[@"C:\odasa\tools\csharp\Semmle.Extraction.CSharp.Standalone foo.sln --references:."] = 0;
520526
Actions.RunProcess[@"C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
521527
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions config"] = 0;
528+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
529+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions props"] = 0;
522530
Actions.FileExists["csharp.log"] = true;
523531
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
524532
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
525533
Actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.sln";
526534
Actions.EnumerateDirectories[@"C:\Project"] = "";
527535

528536
var autobuilder = CreateAutoBuilder("csharp", false, buildless: "true", solution: "foo.sln");
529-
TestAutobuilderScript(autobuilder, 0, 3);
537+
TestAutobuilderScript(autobuilder, 0, 5);
530538
}
531539

532540
void SkipVsWhere()
@@ -563,6 +571,8 @@ public void TestLinuxBuildCommand()
563571
Actions.RunProcess["C:\\odasa\\tools\\odasa index --auto \"./build.sh --skip-tests\""] = 0;
564572
Actions.RunProcess[@"C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
565573
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions config"] = 0;
574+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
575+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions props"] = 0;
566576
Actions.FileExists["csharp.log"] = true;
567577
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
568578
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
@@ -572,7 +582,7 @@ public void TestLinuxBuildCommand()
572582
SkipVsWhere();
573583

574584
var autobuilder = CreateAutoBuilder("csharp", false, buildCommand:"./build.sh --skip-tests");
575-
TestAutobuilderScript(autobuilder, 0, 3);
585+
TestAutobuilderScript(autobuilder, 0, 5);
576586
}
577587

578588
[Fact]
@@ -588,10 +598,12 @@ public void TestLinuxBuildSh()
588598
Actions.RunProcessWorkingDirectory[@"C:\odasa\tools\odasa index --auto build/build.sh"] = "build";
589599
Actions.RunProcess[@"C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
590600
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions config"] = 0;
601+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
602+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions props"] = 0;
591603
Actions.FileExists["csharp.log"] = true;
592604

593605
var autobuilder = CreateAutoBuilder("csharp", false);
594-
TestAutobuilderScript(autobuilder, 0, 5);
606+
TestAutobuilderScript(autobuilder, 0, 7);
595607
}
596608

597609
[Fact]
@@ -642,10 +654,12 @@ public void TestWindowsBuildBat()
642654
Actions.RunProcessWorkingDirectory[@"cmd.exe /C C:\odasa\tools\odasa index --auto build.bat"] = "";
643655
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
644656
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions config"] = 0;
657+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
658+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions props"] = 0;
645659
Actions.FileExists["csharp.log"] = true;
646660

647661
var autobuilder = CreateAutoBuilder("csharp", true);
648-
TestAutobuilderScript(autobuilder, 0, 4);
662+
TestAutobuilderScript(autobuilder, 0, 6);
649663
}
650664

651665
[Fact]
@@ -693,6 +707,8 @@ public void TestWindowCSharpMsBuild()
693707
Actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && C:\\odasa\\tools\\odasa index --auto msbuild C:\\Project\\test2.sln /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 0;
694708
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
695709
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions config"] = 0;
710+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
711+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions props"] = 0;
696712
Actions.FileExists["csharp.log"] = true;
697713
Actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
698714
Actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
@@ -712,7 +728,7 @@ public void TestWindowCSharpMsBuild()
712728
autobuilder.SolutionsToBuild.Add(testSolution1);
713729
autobuilder.SolutionsToBuild.Add(testSolution2);
714730

715-
TestAutobuilderScript(autobuilder, 0, 6);
731+
TestAutobuilderScript(autobuilder, 0, 8);
716732
}
717733

718734
[Fact]
@@ -749,6 +765,8 @@ public void TestSkipNugetMsBuild()
749765
Actions.RunProcess["cmd.exe /C CALL ^\"C:\\Program Files ^(x86^)\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat^\" && C:\\odasa\\tools\\odasa index --auto msbuild C:\\Project\\test2.sln /p:UseSharedCompilation=false /t:Windows /p:Platform=\"x86\" /p:Configuration=\"Debug\" /p:MvcBuildViews=true /P:Fu=Bar"] = 0;
750766
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
751767
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions config"] = 0;
768+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
769+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions props"] = 0;
752770
Actions.FileExists["csharp.log"] = true;
753771
Actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"] = false;
754772
Actions.FileExists[@"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"] = false;
@@ -768,7 +786,7 @@ public void TestSkipNugetMsBuild()
768786
autobuilder.SolutionsToBuild.Add(testSolution1);
769787
autobuilder.SolutionsToBuild.Add(testSolution2);
770788

771-
TestAutobuilderScript(autobuilder, 0, 4);
789+
TestAutobuilderScript(autobuilder, 0, 6);
772790
}
773791

774792
[Fact]
@@ -777,14 +795,16 @@ public void TestSkipNugetBuildless()
777795
Actions.RunProcess[@"C:\odasa\tools\csharp\Semmle.Extraction.CSharp.Standalone foo.sln --references:. --skip-nuget"] = 0;
778796
Actions.RunProcess[@"C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
779797
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions config"] = 0;
798+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
799+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions props"] = 0;
780800
Actions.FileExists["csharp.log"] = true;
781801
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
782802
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
783803
Actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.sln";
784804
Actions.EnumerateDirectories[@"C:\Project"] = "";
785805

786806
var autobuilder = CreateAutoBuilder("csharp", false, buildless: "true", solution: "foo.sln", nugetRestore:"false");
787-
TestAutobuilderScript(autobuilder, 0, 3);
807+
TestAutobuilderScript(autobuilder, 0, 5);
788808
}
789809

790810

@@ -797,14 +817,16 @@ public void TestSkipNugetDotnet()
797817
Actions.RunProcess[@"C:\odasa\tools\odasa index --auto dotnet build --no-incremental /p:UseSharedCompilation=false --no-restore"] = 0;
798818
Actions.RunProcess[@"C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
799819
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions config"] = 0;
820+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
821+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions props"] = 0;
800822
Actions.FileExists["csharp.log"] = true;
801823
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
802824
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
803825
Actions.EnumerateFiles[@"C:\Project"] = "foo.cs\ntest.cs";
804826
Actions.EnumerateDirectories[@"C:\Project"] = "";
805827

806828
var autobuilder = CreateAutoBuilder("csharp", false, dotnetArguments:"--no-restore"); // nugetRestore=false does not work for now.
807-
TestAutobuilderScript(autobuilder, 0, 6);
829+
TestAutobuilderScript(autobuilder, 0, 8);
808830
}
809831

810832
[Fact]
@@ -821,6 +843,8 @@ public void TestDotnetVersionNotInstalled()
821843
Actions.RunProcess[@"C:\odasa\tools\odasa index --auto C:\Project\.dotnet\dotnet build --no-incremental /p:UseSharedCompilation=false"] = 0;
822844
Actions.RunProcess[@"C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
823845
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions config"] = 0;
846+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
847+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions props"] = 0;
824848
Actions.FileExists["csharp.log"] = true;
825849
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
826850
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
@@ -829,7 +853,7 @@ public void TestDotnetVersionNotInstalled()
829853
Actions.EnumerateDirectories[@"C:\Project"] = "";
830854

831855
var autobuilder = CreateAutoBuilder("csharp", false, dotnetVersion:"2.1.3");
832-
TestAutobuilderScript(autobuilder, 0, 10);
856+
TestAutobuilderScript(autobuilder, 0, 12);
833857
}
834858

835859
[Fact]
@@ -846,6 +870,8 @@ public void TestDotnetVersionAlreadyInstalled()
846870
Actions.RunProcess[@"C:\odasa\tools\odasa index --auto C:\Project\.dotnet\dotnet build --no-incremental /p:UseSharedCompilation=false"] = 0;
847871
Actions.RunProcess[@"C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
848872
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions config"] = 0;
873+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
874+
Actions.RunProcess[@"C:\odasa\tools\odasa index --xml --extensions props"] = 0;
849875
Actions.FileExists["csharp.log"] = true;
850876
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
851877
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
@@ -854,7 +880,7 @@ public void TestDotnetVersionAlreadyInstalled()
854880
Actions.EnumerateDirectories[@"C:\Project"] = "";
855881

856882
var autobuilder = CreateAutoBuilder("csharp", false, dotnetVersion: "2.1.3");
857-
TestAutobuilderScript(autobuilder, 0, 10);
883+
TestAutobuilderScript(autobuilder, 0, 12);
858884
}
859885

860886
[Fact]
@@ -869,6 +895,8 @@ public void TestDotnetVersionWindows()
869895
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --auto C:\Project\.dotnet\dotnet build --no-incremental /p:UseSharedCompilation=false"] = 0;
870896
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\java\bin\java -jar C:\odasa\tools\extractor-asp.jar ."] = 0;
871897
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions config"] = 0;
898+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions csproj"] = 0;
899+
Actions.RunProcess[@"cmd.exe /C C:\odasa\tools\odasa index --xml --extensions props"] = 0;
872900
Actions.FileExists["csharp.log"] = true;
873901
Actions.GetEnvironmentVariable["TRAP_FOLDER"] = null;
874902
Actions.GetEnvironmentVariable["SOURCE_ARCHIVE"] = null;
@@ -877,7 +905,7 @@ public void TestDotnetVersionWindows()
877905
Actions.EnumerateDirectories[@"C:\Project"] = "";
878906

879907
var autobuilder = CreateAutoBuilder("csharp", true, dotnetVersion: "2.1.3");
880-
TestAutobuilderScript(autobuilder, 0, 8);
908+
TestAutobuilderScript(autobuilder, 0, 10);
881909
}
882910
}
883911
}

csharp/extractor/Semmle.Autobuild/XmlBuildRule.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@ class XmlBuildRule : IBuildRule
99
{
1010
public BuildScript Analyse(Autobuilder builder)
1111
{
12-
var command = new CommandBuilder(builder.Actions).
12+
var config = new CommandBuilder(builder.Actions).
1313
RunCommand(builder.Odasa).
1414
Argument("index --xml --extensions config");
15-
return command.Script;
15+
var csproj = new CommandBuilder(builder.Actions).
16+
RunCommand(builder.Odasa).
17+
Argument("index --xml --extensions csproj");
18+
var props = new CommandBuilder(builder.Actions).
19+
RunCommand(builder.Odasa).
20+
Argument("index --xml --extensions props");
21+
return config.Script & csproj.Script & props.Script;
1622
}
1723
}
1824
}

0 commit comments

Comments
 (0)