Remove specific standalone/tracing extractor state classes

This commit is contained in:
Tamas Vajk
2024-06-11 14:16:35 +02:00
parent 3574b9fd4f
commit 11faf08ed0
5 changed files with 11 additions and 58 deletions

View File

@@ -16,7 +16,7 @@ namespace Semmle.Extraction.CSharp
public void Initialize(string outputPath, IEnumerable<(string, string)> compilationInfos, CSharpCompilation compilationIn, CommonOptions options)
{
compilation = compilationIn;
extractor = new StandaloneExtractor(Directory.GetCurrentDirectory(), outputPath, compilationInfos, Logger, PathTransformer, options);
extractor = new Extraction.Extractor(Directory.GetCurrentDirectory(), [], outputPath, compilationInfos, Logger, PathTransformer, ExtractorMode.Standalone, options.QlTest);
this.options = options;
LogExtractorInfo(Extraction.Extractor.Version);
SetReferencePaths();

View File

@@ -46,7 +46,7 @@ namespace Semmle.Extraction.CSharp
throw new InternalError("EndInitialize called without BeginInitialize returning true");
this.options = options;
this.compilation = compilation;
this.extractor = new TracingExtractor(cwd, args, GetOutputName(compilation, commandLineArguments), Logger, PathTransformer, options);
this.extractor = new Extraction.Extractor(cwd, args, GetOutputName(compilation, commandLineArguments), [], Logger, PathTransformer, ExtractorMode.None, options.QlTest);
LogDiagnostics();
SetReferencePaths();

View File

@@ -1,6 +1,5 @@
using System.Collections.Generic;
using System.Reflection;
using System.IO;
using Semmle.Util.Logging;
using CompilationInfo = (string key, string value);
@@ -9,20 +8,18 @@ namespace Semmle.Extraction
/// <summary>
/// Implementation of the main extractor state.
/// </summary>
public abstract class Extractor
public class Extractor
{
public string Cwd { get; init; }
public string[] Args { get; init; }
public abstract ExtractorMode Mode { get; }
public ExtractorMode Mode { get; }
public string OutputPath { get; }
public IEnumerable<CompilationInfo> CompilationInfos { get; }
/// <summary>
/// Creates a new extractor instance for one compilation unit.
/// </summary>
/// <param name="logger">The object used for logging.</param>
/// <param name="pathTransformer">The object used for path transformations.</param>
protected Extractor(string cwd, string[] args, string outputPath, IEnumerable<CompilationInfo> compilationInfos, ILogger logger, PathTransformer pathTransformer)
public Extractor(string cwd, string[] args, string outputPath, IEnumerable<CompilationInfo> compilationInfos, ILogger logger, PathTransformer pathTransformer, ExtractorMode mode, bool isQlTest)
{
OutputPath = outputPath;
Logger = logger;
@@ -30,6 +27,12 @@ namespace Semmle.Extraction
CompilationInfos = compilationInfos;
Cwd = cwd;
Args = args;
Mode = mode;
if (isQlTest)
{
Mode |= ExtractorMode.QlTest;
}
}
// Limit the number of error messages in the log file

View File

@@ -1,25 +0,0 @@
using System.Collections.Generic;
using Semmle.Util.Logging;
namespace Semmle.Extraction
{
public class StandaloneExtractor : Extractor
{
public override ExtractorMode Mode { get; }
/// <summary>
/// Creates a new extractor instance for one compilation unit.
/// </summary>
/// <param name="logger">The object used for logging.</param>
/// <param name="pathTransformer">The object used for path transformations.</param>
public StandaloneExtractor(string cwd, string outputPath, IEnumerable<(string, string)> compilationInfos, ILogger logger, PathTransformer pathTransformer, CommonOptions options)
: base(cwd, [], outputPath, compilationInfos, logger, pathTransformer)
{
Mode = ExtractorMode.Standalone;
if (options.QlTest)
{
Mode |= ExtractorMode.QlTest;
}
}
}
}

View File

@@ -1,25 +0,0 @@
using Semmle.Util.Logging;
namespace Semmle.Extraction
{
public class TracingExtractor : Extractor
{
public override ExtractorMode Mode { get; }
/// <summary>
/// Creates a new extractor instance for one compilation unit.
/// </summary>
/// <param name="outputPath">The name of the output DLL/EXE, or null if not specified (standalone extraction).</param>
/// <param name="logger">The object used for logging.</param>
/// <param name="pathTransformer">The object used for path transformations.</param>
public TracingExtractor(string cwd, string[] args, string outputPath, ILogger logger, PathTransformer pathTransformer, CommonOptions options)
: base(cwd, args, outputPath, [], logger, pathTransformer)
{
Mode = ExtractorMode.None;
if (options.QlTest)
{
Mode |= ExtractorMode.QlTest;
}
}
}
}