C#: Remove ITrapBuilder in favour of TextWriter.

This commit is contained in:
Calum Grant
2019-08-08 18:15:30 +01:00
parent aeb38a1757
commit e41e8d6547
44 changed files with 552 additions and 554 deletions

View File

@@ -65,14 +65,15 @@ namespace Semmle.Extraction.Entities
return AssemblyConstructorFactory.Instance.CreateEntity(cx, null);
}
public override IId Id
public override void WriteId(System.IO.TextWriter trapFile)
{
get
trapFile.Write(assembly.ToString());
if (assemblyPath is null)
{
return assemblyPath == null
? new Key(assembly, ";assembly")
: new Key(assembly, "#file:///", assemblyPath.Replace("\\", "/"), ";assembly");
trapFile.Write("#file:///");
trapFile.Write(assemblyPath.Replace("\\", "/"));
}
trapFile.Write(";assembly");
}
}
}

View File

@@ -63,13 +63,14 @@ namespace Semmle.Extraction.Entities
}
}
public override IId Id
public override void WriteId(System.IO.TextWriter trapFile)
{
get
if (Path is null)
trapFile.Write("GENERATED;sourcefile");
else
{
return Path == null ?
new Key("GENERATED;sourcefile") :
new Key(DatabasePath, ";sourcefile");
trapFile.Write(DatabasePath);
trapFile.Write(";sourcefile");
}
}
@@ -104,7 +105,10 @@ namespace Semmle.Extraction.Entities
Context.TrapWriter.files(this, "", "", "");
}
public override IId Id => new Key("GENERATED;sourcefile");
public override void WriteId(TextWriter trapFile)
{
trapFile.Write("GENERATED;sourcefile");
}
public static GeneratedFile Create(Context cx) =>
GeneratedFileFactory.Instance.CreateEntity(cx, null);

View File

@@ -36,7 +36,11 @@ namespace Semmle.Extraction.Entities
public override bool NeedsPopulation => true;
public override IId Id => new Key(DatabasePath, ";folder");
public override void WriteId(System.IO.TextWriter trapFile)
{
trapFile.Write(DatabasePath);
trapFile.Write(";folder");
}
public static Folder Create(Context cx, DirectoryInfo folder) =>
FolderFactory.Instance.CreateEntity2(cx, folder);

View File

@@ -1,3 +1,5 @@
using System.IO;
namespace Semmle.Extraction.Entities
{
public class GeneratedLocation : SourceLocation
@@ -15,7 +17,12 @@ namespace Semmle.Extraction.Entities
Context.TrapWriter.locations_default(this, GeneratedFile, 0, 0, 0, 0);
}
public override IId Id => new Key("loc,", GeneratedFile, ",0,0,0,0");
public override void WriteId(TextWriter trapFile)
{
trapFile.Write("loc,");
trapFile.WriteSubId(GeneratedFile);
trapFile.Write(",0,0,0,0");
}
public override int GetHashCode() => 98732567;

View File

@@ -1,3 +1,4 @@
using System.IO;
using Microsoft.CodeAnalysis;
namespace Semmle.Extraction.Entities
@@ -31,15 +32,20 @@ namespace Semmle.Extraction.Entities
private set;
}
public override IId Id
public override void WriteId(System.IO.TextWriter trapFile)
{
get
{
FileLinePositionSpan l = symbol.GetLineSpan();
FileEntity = Entities.File.Create(Context, l.Path);
return new Key("loc,", FileEntity, ",", l.Span.Start.Line + 1, ",",
l.Span.Start.Character + 1, ",", l.Span.End.Line + 1, ",", l.Span.End.Character);
}
FileLinePositionSpan l = symbol.GetLineSpan();
FileEntity = Entities.File.Create(Context, l.Path);
trapFile.Write("loc,");
trapFile.WriteSubId(FileEntity);
trapFile.Write(',');
trapFile.Write(l.Span.Start.Line + 1);
trapFile.Write(',');
trapFile.Write(l.Span.Start.Character + 1);
trapFile.Write(',');
trapFile.Write(l.Span.End.Line + 1);
trapFile.Write(',');
trapFile.Write(l.Span.End.Character);
}
class SourceLocationFactory : ICachedEntityFactory<Microsoft.CodeAnalysis.Location, SourceLocation>