Skip to content

Fix projects dropped when added as transitive references#14

Open
mscottford wants to merge 4 commits intovladbatushkov:mainfrom
mscottford:fix-transitive-project-references-dropped
Open

Fix projects dropped when added as transitive references#14
mscottford wants to merge 4 commits intovladbatushkov:mainfrom
mscottford:fix-transitive-project-references-dropped

Conversation

@mscottford
Copy link
Copy Markdown
Contributor

Note: This PR depends on #13 (upgrade all dependencies to .NET 10).

Summary

  • Fixes a bug in GetAnalysisContext where projects pulled into the Roslyn workspace as transitive references by an earlier AddToWorkspace(workspace, addProjectReferences: true) call were subsequently dropped by the deduplication check, causing them to receive no CONTAINS triple and no code analysis.
  • Adds a regression test with a two-project fixture solution (SystemUnderTest.sln) where ProjectA references ProjectB. The test asserts both projects appear in the analysis context, catching the original failure mode.
  • Also refactors Nodes.cs and Triples.cs to use C# primary constructor syntax (cleanup left uncommitted from the dependency upgrade session).

Test plan

  • Run dotnet test — 1 test should pass (GetAnalysisContext_IncludesProjectsAddedAsTransitiveReferences)
  • Verify the existing analysis behavior is unchanged by running the tool against a multi-project solution

🤖 Generated with Claude Code

mscottford and others added 4 commits April 10, 2026 13:57
- Targets net10.0 (up from net9.0)
- Buildalyzer/Workspaces 7.1.0 → 8.0.0
- Microsoft.CodeAnalysis/CSharp 4.13.0 → 5.3.0 (Analyzers pin removed)
- Neo4j.Driver 5.27.0 → 6.0.0
- System.CommandLine 2.0.0-beta4 → 2.0.5 (first stable release)
- Dockerfile base image updated to dotnet/sdk:10.0-alpine
- Neo4j image updated to 2026.03.1 with corrected env var names
- docker-compose.yml: removed obsolete version attribute, replaced
  hardcoded Windows volume path with relative ./SystemUnderTest path
- Code updated for breaking API changes in System.CommandLine 2.0
  (SetAction, Options.Add, Aliases.Add, Required, AllowMultipleArgumentsPerToken)
  and Neo4j.Driver 6.0 (IDriver.CloseAsync removed, use await using)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…from analysis

When AddToWorkspace(workspace, addProjectReferences: true) is called for a project,
Buildalyzer eagerly adds its referenced projects into the workspace. The previous
deduplication check silently dropped those projects on their own loop iteration,
causing them to receive no CONTAINS triple and no code analysis.

Adds a regression test using a two-project fixture solution where ProjectA references
ProjectB — ensuring both appear in the analysis context regardless of workspace
insertion order.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant