Skip to content

Commit b94d33d

Browse files
committed
Add buildless failed diagnostic
1 parent 5ab5244 commit b94d33d

File tree

6 files changed

+77
-10
lines changed

6 files changed

+77
-10
lines changed

csharp/autobuilder/Semmle.Autobuild.Shared/Autobuilder.cs

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -322,16 +322,30 @@ void exitCallback(int ret, string msg, bool silent)
322322
.Select(result => result.ToDiagnosticMessage(this, diagSeverity))
323323
.ForEach(AddDiagnostic);
324324

325-
if (buildResult == 0 && IsBuildless)
325+
if (IsBuildless)
326326
{
327-
AddDiagnostic(new DiagnosticMessage(
328-
Options.Language,
329-
"buildless/complete",
330-
"C# analysis with build-mode 'none' completed",
331-
visibility: new DiagnosticMessage.TspVisibility(statusPage: false, cliSummaryTable: true, telemetry: true),
332-
markdownMessage: "C# analysis with build-mode 'none' completed.",
333-
severity: DiagnosticMessage.TspSeverity.Unknown
334-
));
327+
if (buildResult == 0)
328+
{
329+
AddDiagnostic(new DiagnosticMessage(
330+
Options.Language,
331+
"buildless/complete",
332+
"C# analysis with build-mode 'none' completed",
333+
visibility: new DiagnosticMessage.TspVisibility(statusPage: false, cliSummaryTable: true, telemetry: true),
334+
markdownMessage: "C# analysis with build-mode 'none' completed.",
335+
severity: DiagnosticMessage.TspSeverity.Unknown
336+
));
337+
}
338+
else
339+
{
340+
AddDiagnostic(new DiagnosticMessage(
341+
Options.Language,
342+
"buildless/failed",
343+
"C# analysis with build-mode 'none' failed",
344+
visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true),
345+
markdownMessage: "C# analysis with build-mode 'none' failed.",
346+
severity: DiagnosticMessage.TspSeverity.Error
347+
));
348+
}
335349
}
336350

337351
return buildResult;

csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DependencyManager.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,11 @@ private void ResolveConflicts(IEnumerable<string> frameworkPaths)
728728
/// </summary>
729729
public IEnumerable<string> GeneratedSourceFiles => generatedSources;
730730

731+
/// <summary>
732+
/// All of the non-generated source files in the source directory.
733+
/// </summary>
734+
public IEnumerable<string> NonGeneratedSourcesFiles => nonGeneratedSources;
735+
731736
/// <summary>
732737
/// All of the source files in the source directory.
733738
/// </summary>

csharp/extractor/Semmle.Extraction.CSharp.Standalone/Extractor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public static ExitCode Run(Options options)
146146
logger.Log(Severity.Info, "Extracting C# in buildless mode");
147147
using var dependencyManager = new DependencyManager(options.SrcDir, logger);
148148

149-
if (!dependencyManager.AllSourceFiles.Any())
149+
if (!dependencyManager.NonGeneratedSourcesFiles.Any())
150150
{
151151
logger.Log(Severity.Error, "No source files found");
152152
return ExitCode.Errors;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"markdownMessage": "C# analysis with build-mode 'none' failed.",
3+
"severity": "error",
4+
"source": {
5+
"extractorName": "csharp",
6+
"id": "csharp/autobuilder/buildless/failed",
7+
"name": "C# analysis with build-mode 'none' failed"
8+
},
9+
"visibility": {
10+
"cliSummaryTable": true,
11+
"statusPage": true,
12+
"telemetry": true
13+
}
14+
}
15+
{
16+
"markdownMessage": "C# 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.",
17+
"severity": "note",
18+
"source": {
19+
"extractorName": "csharp",
20+
"id": "csharp/autobuilder/buildless/mode-active",
21+
"name": "C# with build-mode set to 'none'"
22+
},
23+
"visibility": {
24+
"cliSummaryTable": true,
25+
"statusPage": true,
26+
"telemetry": true
27+
}
28+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<Target Name="DeleteBinObjFolders" BeforeTargets="Clean">
11+
<RemoveDir Directories=".\bin" />
12+
<RemoveDir Directories=".\obj" />
13+
</Target>
14+
</Project>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from create_database_utils import *
2+
from diagnostics_test_utils import *
3+
4+
run_codeql_database_create([], db=None, lang="csharp", extra_args=["--build-mode=none"], runFunction=runUnsuccessfully)
5+
6+
check_diagnostics()

0 commit comments

Comments
 (0)