-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
C#: Change extractor to accept multiple binlog
files
#17955
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -106,10 +106,10 @@ public static ExitCode Run(string[] args) | |
var canonicalPathCache = CanonicalPathCache.Create(logger, 1000); | ||
var pathTransformer = new PathTransformer(canonicalPathCache); | ||
|
||
if (options.BinaryLogPath is string binlogPath) | ||
if (options.BinaryLogPaths is string[] binlogPaths) | ||
{ | ||
logger.LogInfo(" Running binary log analysis."); | ||
return RunBinaryLogAnalysis(analyzerStopwatch, options, binlogPath, logger, canonicalPathCache, pathTransformer); | ||
return RunBinaryLogAnalysis(analyzerStopwatch, options, binlogPaths, logger, canonicalPathCache, pathTransformer); | ||
} | ||
else | ||
{ | ||
|
@@ -124,6 +124,25 @@ public static ExitCode Run(string[] args) | |
} | ||
} | ||
|
||
private static ExitCode RunBinaryLogAnalysis(Stopwatch stopwatch, Options options, string[] binlogPaths, ILogger logger, CanonicalPathCache canonicalPathCache, PathTransformer pathTransformer) | ||
{ | ||
var allFailed = true; | ||
foreach (var binlogPath in binlogPaths) | ||
{ | ||
var exit = RunBinaryLogAnalysis(stopwatch, options, binlogPath, logger, canonicalPathCache, pathTransformer); | ||
switch (exit) | ||
{ | ||
case ExitCode.Ok: | ||
case ExitCode.Errors: | ||
allFailed &= false; | ||
break; | ||
case ExitCode.Failed: | ||
break; | ||
} | ||
} | ||
return allFailed ? ExitCode.Failed : ExitCode.Ok; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's the motivation for returning There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't remember any longer why I opted for this originally. |
||
} | ||
|
||
private static ExitCode RunBinaryLogAnalysis(Stopwatch stopwatch, Options options, string binlogPath, ILogger logger, CanonicalPathCache canonicalPathCache, PathTransformer pathTransformer) | ||
{ | ||
logger.LogInfo($"Reading compiler calls from binary log {binlogPath}"); | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
| a/A.cs:0:0:0:0 | a/A.cs | | ||
| a/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs:0:0:0:0 | a/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs | | ||
| a/obj/Debug/net8.0/test.AssemblyInfo.cs:0:0:0:0 | a/obj/Debug/net8.0/test.AssemblyInfo.cs | | ||
| a/obj/Debug/net8.0/test.GlobalUsings.g.cs:0:0:0:0 | a/obj/Debug/net8.0/test.GlobalUsings.g.cs | | ||
| b/B.cs:0:0:0:0 | b/B.cs | | ||
| b/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs:0:0:0:0 | b/obj/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs | | ||
| b/obj/Debug/net8.0/test.AssemblyInfo.cs:0:0:0:0 | b/obj/Debug/net8.0/test.AssemblyInfo.cs | | ||
| b/obj/Debug/net8.0/test.GlobalUsings.g.cs:0:0:0:0 | b/obj/Debug/net8.0/test.GlobalUsings.g.cs | | ||
| generated/a/test.csproj (net8.0)/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs:0:0:0:0 | generated/a/test.csproj (net8.0)/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs | | ||
| generated/b/test.csproj (net8.0)/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs:0:0:0:0 | generated/b/test.csproj (net8.0)/System.Text.RegularExpressions.Generator/System.Text.RegularExpressions.Generator.RegexGenerator/RegexGenerator.g.cs | |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import csharp | ||
|
||
from File f | ||
where f.fromSource() | ||
select f |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
using System.Text.RegularExpressions; | ||
|
||
var dummy = "dummy"; | ||
|
||
partial class Test | ||
{ | ||
[GeneratedRegex("abc|def", RegexOptions.IgnoreCase, "en-US")] | ||
private static partial Regex AbcOrDefGeneratedRegex(); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<OutputType>Exe</OutputType> | ||
<TargetFramework>net8.0</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<Nullable>enable</Nullable> | ||
</PropertyGroup> | ||
|
||
</Project> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
using System.Text.RegularExpressions; | ||
|
||
var dummy = "dummy"; | ||
|
||
partial class Test | ||
{ | ||
[GeneratedRegex("abc|def", RegexOptions.IgnoreCase, "en-US")] | ||
private static partial Regex AbcOrDefGeneratedRegex(); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<Project Sdk="Microsoft.NET.Sdk"> | ||
|
||
<PropertyGroup> | ||
<OutputType>Exe</OutputType> | ||
<TargetFramework>net8.0</TargetFramework> | ||
<ImplicitUsings>enable</ImplicitUsings> | ||
<Nullable>enable</Nullable> | ||
</PropertyGroup> | ||
|
||
</Project> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
{ | ||
"markdownMessage": "C# analysis with build-mode 'none' completed.", | ||
"severity": "unknown", | ||
"source": { | ||
"extractorName": "csharp", | ||
"id": "csharp/autobuilder/buildless/complete", | ||
"name": "C# analysis with build-mode 'none' completed" | ||
}, | ||
"visibility": { | ||
"cliSummaryTable": true, | ||
"statusPage": false, | ||
"telemetry": true | ||
} | ||
} | ||
{ | ||
"markdownMessage": "C# was extracted with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.", | ||
"severity": "note", | ||
"source": { | ||
"extractorName": "csharp", | ||
"id": "csharp/autobuilder/buildless/mode-active", | ||
"name": "C# was extracted with build-mode set to 'none'" | ||
}, | ||
"visibility": { | ||
"cliSummaryTable": true, | ||
"statusPage": true, | ||
"telemetry": true | ||
} | ||
} | ||
{ | ||
"markdownMessage": "C# was extracted with the experimental 'binlog' option.", | ||
"severity": "note", | ||
"source": { | ||
"extractorName": "csharp", | ||
"id": "csharp/autobuilder/buildless/binlog", | ||
"name": "C# was extracted with the experimental 'binlog' option" | ||
}, | ||
"visibility": { | ||
"cliSummaryTable": true, | ||
"statusPage": true, | ||
"telemetry": true | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"sdk": { | ||
"version": "8.0.101" | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import commands | ||
|
||
|
||
def test(codeql, csharp): | ||
commands.run(["dotnet", "build", "a/test.csproj", "/bl:a.binlog"]) | ||
commands.run(["dotnet", "build", "b/test.csproj", "/bl:b.binlog"]) | ||
codeql.database.create(build_mode="none", extractor_option=["binlog=a.binlog", "binlog=b.binlog"]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not simply
allFailed = false
?