Directory.Packages.props
+1
-0
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 8f399ad..8f45a42 100644
@@ -21,6 +21,7 @@
/>
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="5.9.0" />
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="5.9.0" />
<PackageVersion Include="Spectre.Console" Version="0.57.2" />
<PackageVersion Include="System.CommandLine" Version="2.0.14" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<PackageVersion Include="Shouldly" Version="4.3.0" />
cli/src/Cfa.Cli.csproj
+1
-0
diff --git a/cli/src/Cfa.Cli.csproj b/cli/src/Cfa.Cli.csproj
index 4929328..0ed27dd 100644
@@ -12,6 +12,7 @@
<ProjectReference Include="..\..\core\src\Cfa.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Spectre.Console" />
<PackageReference Include="System.CommandLine" />
</ItemGroup>
</Project>
cli/src/ScanCommand.cs
+17
-4
diff --git a/cli/src/ScanCommand.cs b/cli/src/ScanCommand.cs
index e1aa406..1723a14 100644
@@ -9,6 +9,7 @@ using System.Threading;
using System.Threading.Tasks;
using GlobExpressions;
using Microsoft.CodeAnalysis;
using Spectre.Console;
namespace Cfa.Cli;
@@ -160,11 +161,23 @@ internal sealed class ScanCommand : Command
IncludePatterns = parseResult.GetValue(IncludeOption) ?? [],
ExcludePatterns = parseResult.GetValue(ExcludeOption) ?? [],
};
using var scanner = await Scanner.Create(solutionFile, options, cancellationToken);
var (startFile, startLine) = parseResult.GetRequiredValue(StartFileOption);
var callGraph = await scanner.BuildCallGraph(startFile, startLine, cancellationToken);
var callGraphAnalysis = Analyzer.Analyze(callGraph);
var callGraphAnalysis = await AnsiConsole
.Status()
.StartAsync(
"Loading solution...",
async ctx =>
{
using var scanner = await Scanner.Create(solutionFile, options, cancellationToken);
ctx.Status = "Building call graph...";
var (startFile, startLine) = parseResult.GetRequiredValue(StartFileOption);
var callGraph = await scanner.BuildCallGraph(startFile, startLine, cancellationToken);
ctx.Status = "Analyzing call graph...";
return Analyzer.Analyze(callGraph);
}
);
PrintCallGraph(
callGraphAnalysis.Origin,
cli/src/packages.lock.json
+14
-0
diff --git a/cli/src/packages.lock.json b/cli/src/packages.lock.json
index 3cdfb13..5bfec58 100644
@@ -14,6 +14,15 @@
"resolved": "11.0.0-rc.3.26522.148",
"contentHash": "SWnTMx96mhBr9LCOySJg1ETlEFFHVsPGdVT02JnYhtqk1+Vke1J7RU3VkKwEiErBr4FJ42Uu4k7GdOtkRuvs/Q=="
},
"Spectre.Console": {
"type": "Direct",
"requested": "[0.57.2, )",
"resolved": "0.57.2",
"contentHash": "wzsB+P9i6F9G+cFOJxRotCiQWNSzZVAMxi8YMiHlGXXU1JLMXGp7zSSqBMmROZS2bzpK5jk+Saa7Evp8HwqhKg==",
"dependencies": {
"Spectre.Console.Ansi": "0.57.2"
}
},
"System.CommandLine": {
"type": "Direct",
"requested": "[2.0.14, )",
@@ -116,6 +125,11 @@
"resolved": "1.0.52",
"contentHash": "oNv2JtYXhpdJrX63nibx1JT3uCESOBQ1LAk7Dtz/sr0+laW0KRM6eKp4CZ3MHDR2siIkKsY8MmUkeP5DKkQQ5w=="
},
"Spectre.Console.Ansi": {
"type": "Transitive",
"resolved": "0.57.2",
"contentHash": "Y1+u73shwP+JYHmrkdN6bSt2kaGBEAafhi2nrecczbXdFRey+k7J/WF9YPfcB0rqivv2S8fmif6FSBq9m/AFvw=="
},
"System.Composition": {
"type": "Transitive",
"resolved": "10.0.1",