C#: Introduce extractor mode to identify DBs created with codeql test run

This commit is contained in:
Tom Hvitved
2022-01-05 11:54:38 +01:00
parent 3df30545d3
commit c8509cc382
24 changed files with 97 additions and 80 deletions

View File

@@ -8,7 +8,7 @@ namespace Semmle.Extraction
/// </summary>
public abstract class Extractor
{
public abstract bool Standalone { get; }
public abstract ExtractorMode Mode { get; }
/// <summary>
/// Creates a new extractor instance for one compilation unit.

View File

@@ -0,0 +1,16 @@
using System;
namespace Semmle.Extraction
{
/// <summary>
/// The mode in which a file is extracted.
/// </summary>
[Flags]
public enum ExtractorMode
{
None = 0,
Standalone = 1,
Pdb = 2,
QlTest = 4,
}
}

View File

@@ -4,15 +4,19 @@ namespace Semmle.Extraction
{
public class StandaloneExtractor : Extractor
{
public override bool Standalone => true;
private readonly ExtractorMode mode;
public override ExtractorMode Mode => mode;
/// <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(ILogger logger, PathTransformer pathTransformer) : base(logger, pathTransformer)
public StandaloneExtractor(ILogger logger, PathTransformer pathTransformer, CommonOptions options) : base(logger, pathTransformer)
{
mode = ExtractorMode.Standalone;
if (options.QlTest)
mode |= ExtractorMode.QlTest;
}
}
}

View File

@@ -4,8 +4,8 @@ namespace Semmle.Extraction
{
public class TracingExtractor : Extractor
{
public override bool Standalone => false;
private readonly ExtractorMode mode;
public override ExtractorMode Mode => mode;
public string OutputPath { get; }
/// <summary>
@@ -14,9 +14,12 @@ namespace Semmle.Extraction
/// <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 outputPath, ILogger logger, PathTransformer pathTransformer) : base(logger, pathTransformer)
public TracingExtractor(string outputPath, ILogger logger, PathTransformer pathTransformer, CommonOptions options) : base(logger, pathTransformer)
{
OutputPath = outputPath;
mode = ExtractorMode.None;
if (options.QlTest)
mode |= ExtractorMode.QlTest;
}
}
}