up
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Export Center CI / export-ci (push) Has been cancelled
Notify Smoke Test / Notify Unit Tests (push) Has been cancelled
Notify Smoke Test / Notifier Service Tests (push) Has been cancelled
Notify Smoke Test / Notification Smoke Test (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Scanner Analyzers / Discover Analyzers (push) Has been cancelled
Scanner Analyzers / Build Analyzers (push) Has been cancelled
Scanner Analyzers / Test Language Analyzers (push) Has been cancelled
Scanner Analyzers / Validate Test Fixtures (push) Has been cancelled
Scanner Analyzers / Verify Deterministic Output (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Signals Reachability Scoring & Events / reachability-smoke (push) Has been cancelled
Signals Reachability Scoring & Events / sign-and-upload (push) Has been cancelled
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Export Center CI / export-ci (push) Has been cancelled
Notify Smoke Test / Notify Unit Tests (push) Has been cancelled
Notify Smoke Test / Notifier Service Tests (push) Has been cancelled
Notify Smoke Test / Notification Smoke Test (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Scanner Analyzers / Discover Analyzers (push) Has been cancelled
Scanner Analyzers / Build Analyzers (push) Has been cancelled
Scanner Analyzers / Test Language Analyzers (push) Has been cancelled
Scanner Analyzers / Validate Test Fixtures (push) Has been cancelled
Scanner Analyzers / Verify Deterministic Output (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Signals Reachability Scoring & Events / reachability-smoke (push) Has been cancelled
Signals Reachability Scoring & Events / sign-and-upload (push) Has been cancelled
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
using System.Collections.Generic;
|
||||
using StellaOps.Signals.Models;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
using System.Collections.Generic;
|
||||
using StellaOps.Signals.Models;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Result produced by a callgraph parser.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Exception thrown when a parser is not registered for the requested language.
|
||||
/// </summary>
|
||||
public sealed class CallgraphParserNotFoundException : Exception
|
||||
{
|
||||
public CallgraphParserNotFoundException(string language)
|
||||
: base($"No callgraph parser registered for language '{language}'.")
|
||||
{
|
||||
Language = language;
|
||||
}
|
||||
|
||||
public string Language { get; }
|
||||
}
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Exception thrown when a parser is not registered for the requested language.
|
||||
/// </summary>
|
||||
public sealed class CallgraphParserNotFoundException : Exception
|
||||
{
|
||||
public CallgraphParserNotFoundException(string language)
|
||||
: base($"No callgraph parser registered for language '{language}'.")
|
||||
{
|
||||
Language = language;
|
||||
}
|
||||
|
||||
public string Language { get; }
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Exception thrown when a callgraph artifact is invalid.
|
||||
/// </summary>
|
||||
public sealed class CallgraphParserValidationException : Exception
|
||||
{
|
||||
public CallgraphParserValidationException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
}
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Exception thrown when a callgraph artifact is invalid.
|
||||
/// </summary>
|
||||
public sealed class CallgraphParserValidationException : Exception
|
||||
{
|
||||
public CallgraphParserValidationException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Parses raw callgraph artifacts into normalized structures.
|
||||
/// </summary>
|
||||
public interface ICallgraphParser
|
||||
{
|
||||
/// <summary>
|
||||
/// Language identifier handled by the parser (e.g., java, nodejs).
|
||||
/// </summary>
|
||||
string Language { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Parses the supplied artifact stream.
|
||||
/// </summary>
|
||||
Task<CallgraphParseResult> ParseAsync(Stream artifactStream, CancellationToken cancellationToken);
|
||||
}
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Parses raw callgraph artifacts into normalized structures.
|
||||
/// </summary>
|
||||
public interface ICallgraphParser
|
||||
{
|
||||
/// <summary>
|
||||
/// Language identifier handled by the parser (e.g., java, nodejs).
|
||||
/// </summary>
|
||||
string Language { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Parses the supplied artifact stream.
|
||||
/// </summary>
|
||||
Task<CallgraphParseResult> ParseAsync(Stream artifactStream, CancellationToken cancellationToken);
|
||||
}
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Resolves callgraph parsers for specific languages.
|
||||
/// </summary>
|
||||
public interface ICallgraphParserResolver
|
||||
{
|
||||
/// <summary>
|
||||
/// Resolves a parser for the supplied language.
|
||||
/// </summary>
|
||||
ICallgraphParser Resolve(string language);
|
||||
}
|
||||
|
||||
internal sealed class CallgraphParserResolver : ICallgraphParserResolver
|
||||
{
|
||||
private readonly IReadOnlyDictionary<string, ICallgraphParser> parsersByLanguage;
|
||||
|
||||
public CallgraphParserResolver(IEnumerable<ICallgraphParser> parsers)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(parsers);
|
||||
|
||||
var map = new Dictionary<string, ICallgraphParser>(StringComparer.OrdinalIgnoreCase);
|
||||
foreach (var parser in parsers)
|
||||
{
|
||||
map[parser.Language] = parser;
|
||||
}
|
||||
|
||||
parsersByLanguage = map;
|
||||
}
|
||||
|
||||
public ICallgraphParser Resolve(string language)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(language);
|
||||
|
||||
if (parsersByLanguage.TryGetValue(language, out var parser))
|
||||
{
|
||||
return parser;
|
||||
}
|
||||
|
||||
throw new CallgraphParserNotFoundException(language);
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Resolves callgraph parsers for specific languages.
|
||||
/// </summary>
|
||||
public interface ICallgraphParserResolver
|
||||
{
|
||||
/// <summary>
|
||||
/// Resolves a parser for the supplied language.
|
||||
/// </summary>
|
||||
ICallgraphParser Resolve(string language);
|
||||
}
|
||||
|
||||
internal sealed class CallgraphParserResolver : ICallgraphParserResolver
|
||||
{
|
||||
private readonly IReadOnlyDictionary<string, ICallgraphParser> parsersByLanguage;
|
||||
|
||||
public CallgraphParserResolver(IEnumerable<ICallgraphParser> parsers)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(parsers);
|
||||
|
||||
var map = new Dictionary<string, ICallgraphParser>(StringComparer.OrdinalIgnoreCase);
|
||||
foreach (var parser in parsers)
|
||||
{
|
||||
map[parser.Language] = parser;
|
||||
}
|
||||
|
||||
parsersByLanguage = map;
|
||||
}
|
||||
|
||||
public ICallgraphParser Resolve(string language)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(language);
|
||||
|
||||
if (parsersByLanguage.TryGetValue(language, out var parser))
|
||||
{
|
||||
return parser;
|
||||
}
|
||||
|
||||
throw new CallgraphParserNotFoundException(language);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.Json;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using StellaOps.Signals.Models;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
using StellaOps.Signals.Models;
|
||||
|
||||
namespace StellaOps.Signals.Parsing;
|
||||
|
||||
/// <summary>
|
||||
/// Simple JSON-based callgraph parser used for initial language coverage.
|
||||
/// </summary>
|
||||
public sealed class SimpleJsonCallgraphParser : ICallgraphParser
|
||||
{
|
||||
private readonly JsonSerializerOptions serializerOptions;
|
||||
|
||||
public SimpleJsonCallgraphParser(string language)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(language);
|
||||
Language = language;
|
||||
serializerOptions = new JsonSerializerOptions
|
||||
{
|
||||
PropertyNameCaseInsensitive = true
|
||||
};
|
||||
}
|
||||
|
||||
public string Language { get; }
|
||||
|
||||
{
|
||||
private readonly JsonSerializerOptions serializerOptions;
|
||||
|
||||
public SimpleJsonCallgraphParser(string language)
|
||||
{
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(language);
|
||||
Language = language;
|
||||
serializerOptions = new JsonSerializerOptions
|
||||
{
|
||||
PropertyNameCaseInsensitive = true
|
||||
};
|
||||
}
|
||||
|
||||
public string Language { get; }
|
||||
|
||||
public async Task<CallgraphParseResult> ParseAsync(Stream artifactStream, CancellationToken cancellationToken)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(artifactStream);
|
||||
@@ -321,5 +321,5 @@ public sealed class SimpleJsonCallgraphParser : ICallgraphParser
|
||||
_ => null
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user