C#: Extract dependency restore telemetry data

This commit is contained in:
Tamas Vajk
2024-02-05 13:09:04 +01:00
parent 6fbbb82f68
commit c2c7826936
13 changed files with 133 additions and 24 deletions

View File

@@ -6,6 +6,7 @@ using System.Linq;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Semmle.Util;
using Semmle.Util.Logging;
using Semmle.Extraction.CSharp.Populators;
@@ -20,7 +21,7 @@ namespace Semmle.Extraction.CSharp
protected CSharpCompilation? compilation;
protected CommonOptions? options;
private protected Entities.Compilation? compilationEntity;
private IDisposable? compilationTrapFile;
private TrapWriter? compilationTrapFile;
private readonly object progressMutex = new object();
@@ -240,6 +241,8 @@ namespace Semmle.Extraction.CSharp
var cx = new Context(extractor, compilation.Clone(), trapWriter, new AssemblyScope(assembly, assemblyPath), addAssemblyTrapPrefix);
compilationEntity = Entities.Compilation.Create(cx);
extractor.CompilationInfos?.ForEach(ci => trapWriter.Writer.compilation_info(compilationEntity, ci.key, ci.value));
}
catch (Exception ex) // lgtm[cs/catch-of-all-exceptions]
{

View File

@@ -13,10 +13,10 @@ namespace Semmle.Extraction.CSharp
{
}
public void Initialize(string outputPath, CSharpCompilation compilationIn, CommonOptions options)
public void Initialize(string outputPath, IEnumerable<(string, string)> compilationInfos, CSharpCompilation compilationIn, CommonOptions options)
{
compilation = compilationIn;
extractor = new StandaloneExtractor(outputPath, Logger, PathTransformer, options);
extractor = new StandaloneExtractor(outputPath, compilationInfos, Logger, PathTransformer, options);
this.options = options;
LogExtractorInfo(Extraction.Extractor.Version);
SetReferencePaths();

View File

@@ -71,6 +71,9 @@ namespace Semmle.Extraction.CSharp
internal static void compilation_expanded_args(this TextWriter trapFile, Compilation compilation, int index, string arg) =>
trapFile.WriteTuple("compilation_expanded_args", compilation, index, arg);
internal static void compilation_info(this TextWriter trapFile, Compilation compilation, string infoKey, string infoValue) =>
trapFile.WriteTuple("compilation_info", compilation, infoKey, infoValue);
internal static void compilation_compiling_files(this TextWriter trapFile, Compilation compilation, int index, Extraction.Entities.File file) =>
trapFile.WriteTuple("compilation_compiling_files", compilation, index, file);