1
1
<Project >
2
2
3
3
<PropertyGroup >
4
- <_AnalyzerProjectOptions >--project " $(MSBuildProjectFile)" </_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 " $(MSBuildProjectFile)" </_FSharpAnalyzers_ProjectOptions >
5
8
</PropertyGroup >
6
9
7
10
<Target Name =" _AnalyzeFSharpProject" >
8
11
<Error Condition =" $(FSharpAnalyzersOtherFlags) == ''" Text =" A property FSharpAnalyzersOtherFlags should exists with all the analyzer cli arguments!" />
9
12
<Exec
10
- ContinueOnError =" true "
13
+ ContinueOnError =" $(FSharpAnalyzers_ContinueOnError) "
11
14
IgnoreExitCode =" true"
12
- Command =" dotnet fsharp-analyzers $(_AnalyzerProjectOptions ) $(FSharpAnalyzersOtherFlags)" />
15
+ Command =" $(FSharpAnalyzers_ExeHost) $(FSharpAnalyzers_Exe) $(_FSharpAnalyzers_ProjectOptions ) $(FSharpAnalyzersOtherFlags)" />
13
16
</Target >
14
17
15
18
<Target Name =" AnalyzeFSharpProject" DependsOnTargets =" _AnalyzeFSharpProject" />
25
28
</PropertyGroup >
26
29
</Target >
27
30
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'" >
29
36
<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
- -->
36
37
<PropertyGroup >
37
- <_AnalyzerProjectOptions Condition =" '@(FscCommandLineArgs->Count())' != '0'" >--fsc-args " @(FscCommandLineArgs)" </_AnalyzerProjectOptions >
38
+ <FSharpAnalyzers_AlwaysRunAfterBuild Condition =" $(FSharpAnalyzers_AlwaysRunAfterBuild) == '' and '@(FscCommandLineArgs->Count())' != '0'" >true</FSharpAnalyzers_AlwaysRunAfterBuild >
39
+ <_FSharpAnalyzers_ProjectOptions Condition =" '@(FscCommandLineArgs->Count())' != '0'" >--fsc-args " @(FscCommandLineArgs)" </_FSharpAnalyzers_ProjectOptions >
38
40
</PropertyGroup >
39
41
<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)" />
45
45
</Target >
46
+
47
+ <Target Name =" FSharpAnalyzerAfterBuild" DependsOnTargets =" _FSharpAnalyzerAfterBuild" />
46
48
</Project >
0 commit comments