Skip to content

Commit 2f0b54c

Browse files
committed
Refactor buildless telemetry logging
1 parent b94d33d commit 2f0b54c

File tree

2 files changed

+50
-46
lines changed

2 files changed

+50
-46
lines changed

csharp/autobuilder/Semmle.Autobuild.CSharp/CSharpAutobuilder.cs

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,16 @@ public class CSharpAutobuilder : Autobuilder<CSharpAutobuildOptions>
4444
public override BuildScript GetBuildScript()
4545
{
4646
var attempt = BuildScript.Failure;
47-
switch (BuildStrategy)
47+
switch (GetCSharpBuildStrategy())
4848
{
4949
case CSharpBuildStrategy.CustomBuildCommand:
5050
attempt = new BuildCommandRule(DotNetRule.WithDotNet).Analyse(this, false) & CheckExtractorRun(true);
5151
break;
5252
case CSharpBuildStrategy.Buildless:
5353
// No need to check that the extractor has been executed in buildless mode
54-
attempt = new StandaloneBuildRule().Analyse(this, false);
54+
attempt = BuildScript.Bind(
55+
AddBuildlessStartedDiagnostic() & new StandaloneBuildRule().Analyse(this, false),
56+
AddBuildlessEndedDiagnostic);
5557
break;
5658
case CSharpBuildStrategy.MSBuild:
5759
attempt = new MsBuildRule().Analyse(this, false) & CheckExtractorRun(true);
@@ -86,6 +88,52 @@ public BuildScript CheckExtractorRun(bool warnOnFailure) =>
8688
return 1;
8789
});
8890

91+
private BuildScript AddBuildlessStartedDiagnostic()
92+
{
93+
return BuildScript.Create(actions =>
94+
{
95+
AddDiagnostic(new DiagnosticMessage(
96+
Options.Language,
97+
"buildless/mode-active",
98+
"C# with build-mode set to 'none'",
99+
visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true),
100+
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.",
101+
severity: DiagnosticMessage.TspSeverity.Note
102+
));
103+
return 0;
104+
});
105+
}
106+
107+
private BuildScript AddBuildlessEndedDiagnostic(int buildResult)
108+
{
109+
return BuildScript.Create(actions =>
110+
{
111+
if (buildResult == 0)
112+
{
113+
AddDiagnostic(new DiagnosticMessage(
114+
Options.Language,
115+
"buildless/complete",
116+
"C# analysis with build-mode 'none' completed",
117+
visibility: new DiagnosticMessage.TspVisibility(statusPage: false, cliSummaryTable: true, telemetry: true),
118+
markdownMessage: "C# analysis with build-mode 'none' completed.",
119+
severity: DiagnosticMessage.TspSeverity.Unknown
120+
));
121+
}
122+
else
123+
{
124+
AddDiagnostic(new DiagnosticMessage(
125+
Options.Language,
126+
"buildless/failed",
127+
"C# analysis with build-mode 'none' failed",
128+
visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true),
129+
markdownMessage: "C# analysis with build-mode 'none' failed.",
130+
severity: DiagnosticMessage.TspSeverity.Error
131+
));
132+
}
133+
return buildResult;
134+
});
135+
}
136+
89137
protected override void AutobuildFailureDiagnostic()
90138
{
91139
// if `ScriptPath` is not null here, the `BuildCommandAuto` rule was
@@ -218,10 +266,6 @@ private CSharpBuildStrategy GetCSharpBuildStrategy()
218266
return CSharpBuildStrategy.Auto;
219267
}
220268

221-
private CSharpBuildStrategy? buildStrategy = null;
222-
private CSharpBuildStrategy BuildStrategy => buildStrategy ??= GetCSharpBuildStrategy();
223-
public override bool IsBuildless => BuildStrategy == CSharpBuildStrategy.Buildless;
224-
225269
private enum CSharpBuildStrategy
226270
{
227271
CustomBuildCommand,

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

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -301,18 +301,6 @@ void exitCallback(int ret, string msg, bool silent)
301301
var onOutput = BuildOutputHandler(Console.Out);
302302
var onError = BuildOutputHandler(Console.Error);
303303

304-
if (IsBuildless)
305-
{
306-
AddDiagnostic(new DiagnosticMessage(
307-
Options.Language,
308-
"buildless/mode-active",
309-
"C# with build-mode set to 'none'",
310-
visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true),
311-
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.",
312-
severity: DiagnosticMessage.TspSeverity.Note
313-
));
314-
}
315-
316304
var buildResult = script.Run(Actions, startCallback, exitCallback, onOutput, onError);
317305

318306
// if the build succeeded, all diagnostics we captured from the build output should be warnings;
@@ -322,32 +310,6 @@ void exitCallback(int ret, string msg, bool silent)
322310
.Select(result => result.ToDiagnosticMessage(this, diagSeverity))
323311
.ForEach(AddDiagnostic);
324312

325-
if (IsBuildless)
326-
{
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-
}
349-
}
350-
351313
return buildResult;
352314
}
353315

@@ -356,8 +318,6 @@ void exitCallback(int ret, string msg, bool silent)
356318
/// </summary>
357319
public abstract BuildScript GetBuildScript();
358320

359-
public virtual bool IsBuildless { get; } = false;
360-
361321

362322
/// <summary>
363323
/// Produces a diagnostic for the tool status page that we were unable to automatically

0 commit comments

Comments
 (0)