Skip to content

Commit 152165f

Browse files
committed
Make Analyzer after build more configurable
1 parent 533fddd commit 152165f

File tree

2 files changed

+20
-17
lines changed

2 files changed

+20
-17
lines changed

samples/MsBuildExample/MsBuildExample.fsproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
<PropertyGroup>
77
<RunAnalyzers>true</RunAnalyzers>
88
<FSharpAnalyzersOtherFlags>--analyzers-path "../../artifacts/bin/OptionAnalyzer/debug" -v d</FSharpAnalyzersOtherFlags>
9+
<!-- <FSharpAnalyzers_AlwaysRunAfterBuild>true</FSharpAnalyzers_AlwaysRunAfterBuild> -->
910
</PropertyGroup>
1011

1112
<PropertyGroup>
1213
<OutputType>Exe</OutputType>
13-
<TargetFramework>net9.0</TargetFramework>
14+
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
1415
</PropertyGroup>
1516

1617
<ItemGroup>
Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
<Project>
22

33
<PropertyGroup>
4-
<_AnalyzerProjectOptions>--project &quot;$(MSBuildProjectFile)&quot;</_AnalyzerProjectOptions>
4+
<FSharpAnalyzers_ExeHost Condition="'$(FSharpAnalyzers_ExeHost)' == ''">dotnet</FSharpAnalyzers_ExeHost>
5+
<FSharpAnalyzers_Exe Condition="'$(FSharpAnalyzers_Exe)' == ''">fsharp-analyzers</FSharpAnalyzers_Exe>
6+
<FSharpAnalyzers_ContinueOnError Condition="'$(FSharpAnalyzers_ContinueOnError)' == ''">true</FSharpAnalyzers_ContinueOnError>
7+
<_FSharpAnalyzers_ProjectOptions>--project &quot;$(MSBuildProjectFile)&quot;</_FSharpAnalyzers_ProjectOptions>
58
</PropertyGroup>
69

710
<Target Name="_AnalyzeFSharpProject">
811
<Error Condition="$(FSharpAnalyzersOtherFlags) == ''" Text="A property FSharpAnalyzersOtherFlags should exists with all the analyzer cli arguments!" />
912
<Exec
10-
ContinueOnError="true"
13+
ContinueOnError="$(FSharpAnalyzers_ContinueOnError)"
1114
IgnoreExitCode="true"
12-
Command="dotnet fsharp-analyzers $(_AnalyzerProjectOptions) $(FSharpAnalyzersOtherFlags)" />
15+
Command="$(FSharpAnalyzers_ExeHost) $(FSharpAnalyzers_Exe) $(_FSharpAnalyzers_ProjectOptions) $(FSharpAnalyzersOtherFlags)" />
1316
</Target>
1417

1518
<Target Name="AnalyzeFSharpProject" DependsOnTargets="_AnalyzeFSharpProject" />
@@ -25,22 +28,21 @@
2528
</PropertyGroup>
2629
</Target>
2730

28-
<Target Name="FsharpAnalyzerAfterBuild" DependsOnTargets="_SetupFSharpAnalyzerProjectOptions" AfterTargets="AfterBuild" Condition="'$(RunAnalyzers)' == 'true'">
31+
<Target
32+
Name="_FSharpAnalyzerAfterBuild"
33+
DependsOnTargets="_SetupFSharpAnalyzerProjectOptions;CoreCompile"
34+
AfterTargets="AfterBuild"
35+
Condition="'$(RunAnalyzers)' == 'true'">
2936
<Error Condition="$(FSharpAnalyzersOtherFlags) == ''" Text="A property FSharpAnalyzersOtherFlags should exists with all the analyzer cli arguments!" />
30-
<!--
31-
Question: Should we only execute this target if FscCommandLineArgs is not empty?
32-
Argument for Incremental builds may skip CoreCompile if no files changed, so we don't want to run the analyzer in that case.
33-
There may be a better way to detect if CoreCompile was skipped but this seems to work.
34-
And if someone wants to run the analyzer without FscCommandLineArgs, they can run the AnalyzeFSharpProject target directly.
35-
-->
3637
<PropertyGroup>
37-
<_AnalyzerProjectOptions Condition="'@(FscCommandLineArgs->Count())' != '0'">--fsc-args &quot;@(FscCommandLineArgs)&quot;</_AnalyzerProjectOptions>
38+
<FSharpAnalyzers_AlwaysRunAfterBuild Condition="$(FSharpAnalyzers_AlwaysRunAfterBuild) == '' and '@(FscCommandLineArgs->Count())' != '0'">true</FSharpAnalyzers_AlwaysRunAfterBuild>
39+
<_FSharpAnalyzers_ProjectOptions Condition="'@(FscCommandLineArgs->Count())' != '0'">--fsc-args &quot;@(FscCommandLineArgs)&quot;</_FSharpAnalyzers_ProjectOptions>
3840
</PropertyGroup>
3941
<Exec
40-
ContinueOnError="true"
41-
IgnoreExitCode="true"
42-
Condition="'@(FscCommandLineArgs->Count())' != '0'"
43-
Command="dotnet fsharp-analyzers $(_AnalyzerProjectOptions) $(FSharpAnalyzersOtherFlags)" />
44-
42+
ContinueOnError="$(FSharpAnalyzers_ContinueOnError)"
43+
Condition="'$(FSharpAnalyzers_AlwaysRunAfterBuild)' == 'true'"
44+
Command="$(FSharpAnalyzers_ExeHost) $(FSharpAnalyzers_Exe) $(_FSharpAnalyzers_ProjectOptions) $(FSharpAnalyzersOtherFlags)" />
4545
</Target>
46+
47+
<Target Name="FSharpAnalyzerAfterBuild" DependsOnTargets="_FSharpAnalyzerAfterBuild"/>
4648
</Project>

0 commit comments

Comments
 (0)