Open dmirmilshteyn opened 5 years ago
I released 2.3.0 this morning and it has a rewritten command line parser. Can you give it a try and report back?
I'm using version 5.0.0 and I have a similar problem: files with absolute paths are not reported in Linux. These files are considered as options because of their leading /
: https://github.com/daveaglick/Buildalyzer/blob/main/src/Buildalyzer/AnalyzerResult.cs#L229
My workaround is to transform all Compile item paths to relative paths with this target (see https://github.com/nimbleways/dotnet-subset/blob/ede95798a/Directory.Build.targets#L7-L15):
<!-- Workaround for https://github.com/daveaglick/Buildalyzer/issues/108 -->
<Target Name="MakeCompileItemsRelative" BeforeTargets="CoreCompile">
<ItemGroup>
<CompileWithRelativePaths Include="@(Compile->'$([MSBuild]::MakeRelative('$(MSBuildProjectDirectory)', '%(Compile.Identity)'))')" />
<Compile Remove="@(Compile)" />
<Compile Include="@(CompileWithRelativePaths)" />
</ItemGroup>
</Target>
I have a project which I analyze on both Windows and Linux, and it seems like some files are being excluded/ignored from the source files collection when running the analyses on Linux. It works fine with the same inputs on Windows.
Specifically, it seems like any files that have been included in the
Compile
item group with an absolute path are ignored on Linux.Example:
<Compile Include="$(MSBuildThisFileDirectory)Item.cs" />
There are two cases where I need to include files like this: a custom file outside the project directory, used with many projects, and shared projects.
VS adds all items in shared projects in that style. Apart from that, shared projects seem to work fine.
I believe this is happening because the Csc command line parser treats filepaths of the form "/path/to/item.cs" as an argument instead of a file path, but I'm really not sure.
Project:
This file path resolves to
/path/to/test.cs
Code used to analyze:
FullExampleProject.zip
Thanks!