Skip to content

Commit

Permalink
Use Ionide.Analyzers (#2978)
Browse files Browse the repository at this point in the history
* Use Ionide.Analyzers

* Treat as warnings?

* Update Ionide.Analyzers

* Bump lock files.

* Run both analyzer packages

* Try relative paths

* Touch file

* Delete sarif files

* Restore CI build

* Use repository root as working directory.

* Run both analyzer packages.

* Fix Ionide reported problems.

* Use AnalyzerFlags

* Use FSharp.Analyzers.Build

* Revert removal of build-devcontainer.

* Add code root

* Use AnalyzeFSharpProject

* Use array postfix.

* Address most analyzer reports

* Revert "Address most analyzer reports"

This reverts commit d8e93ed.

* Update FSharp.Analyzer sdk

* Update lock files.

* Update packages

* Use post fix in signature files.

* Use 8.0.100 stable SDK.

* Update dev container to 8.0.100
  • Loading branch information
nojaf authored Nov 15, 2023
1 parent 51992ee commit a7d8e75
Show file tree
Hide file tree
Showing 24 changed files with 1,332 additions and 90 deletions.
2 changes: 1 addition & 1 deletion .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
]
},
"fsharp-analyzers": {
"version": "0.17.1",
"version": "0.20.2",
"commands": [
"fsharp-analyzers"
]
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM mcr.microsoft.com/dotnet/sdk:8.0.100-rc.2
FROM mcr.microsoft.com/dotnet/sdk:8.0.100

# Avoid warnings by switching to noninteractive
ENV DEBIAN_FRONTEND=noninteractive
Expand Down
20 changes: 1 addition & 19 deletions .devcontainer/profile.sh
Original file line number Diff line number Diff line change
@@ -1,25 +1,7 @@
#!/bin/bash

alias ni="touch"
# alias dtr="dotnet tool restore"
function dtr () {
# Extract lines that contain tool names and versions
tools=$(grep -oP '"\K[^"]+(?=": {)' .config/dotnet-tools.json | grep -v '^tools$')
versions=$(grep -oP 'version": "\K[^"]+' .config/dotnet-tools.json)

# Convert strings to arrays
readarray -t tools_array <<<"$tools"
readarray -t versions_array <<<"$versions"

# Loop through the arrays
for i in "${!tools_array[@]}"; do
tool_name=${tools_array[$i]}
tool_version=${versions_array[$i]}

# Install the tool
dotnet tool install "$tool_name" --version "$tool_version"
done
}
alias dtr="dotnet tool restore"

function format-changed() {
# Get the root of the current git repository
Expand Down
11 changes: 8 additions & 3 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,14 @@ Some common use cases include:
<PackageReference Include="DotNet.ReproducibleBuilds" Version="1.1.1" PrivateAssets="all" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="G-Research.FSharp.Analyzers" Version="0.1.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>build</IncludeAssets>
<PackageReference Include="G-Research.FSharp.Analyzers" Version="0.3.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>build</IncludeAssets>
</PackageReference>
<PackageReference Include="Ionide.Analyzers" Version="0.4.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="FSharp.Analyzers.Build" Version="0.2.0" PrivateAssets="All" />
</ItemGroup>
</Project>
30 changes: 10 additions & 20 deletions Directory.Build.targets
Original file line number Diff line number Diff line change
@@ -1,22 +1,12 @@
<Project>

<Target
Name="AnalyzeProject"
DependsOnTargets="Restore;ResolveAssemblyReferencesDesignTime;ResolveProjectReferencesDesignTime;ResolvePackageDependenciesDesignTime;FindReferenceAssembliesForReferences;_GenerateCompileDependencyCache;_ComputeNonExistentFileProperty;BeforeBuild;BeforeCompile;CoreCompile">

<Message Importance="normal" Text="fsc arguments: @(FscCommandLineArgs)" />
<Message Importance="High" Text="Analyzing $(MSBuildProjectFile)"/>
<PropertyGroup>
<DOTNET_ROLL_FORWARD_TO_PRERELEASE>1</DOTNET_ROLL_FORWARD_TO_PRERELEASE>
<DOTNET_ROLL_FORWARD>LatestMajor</DOTNET_ROLL_FORWARD>
</PropertyGroup>
<Exec
ContinueOnError="true"
Command="dotnet fsharp-analyzers --fsc-args &quot;@(FscCommandLineArgs)&quot; --analyzers-path &quot;$(PkgG-Research_FSharp_Analyzers)/analyzers/dotnet/fs&quot; --exclude-analyzer PartialAppAnalyzer --fail-on-warnings GRA-STRING-001 GRA-STRING-002 GRA-STRING-003 GRA-UNIONCASE-001 --verbose --report &quot;../../analysisreports/$(MSBuildProjectName)-analysis.sarif&quot;">
<Output TaskParameter="ExitCode" PropertyName="LastExitCode" />
</Exec>
<Error Condition="'$(LastExitCode)' == '-2'" Text="Problems were found $(MSBuildProjectFile)" />

</Target>

<PropertyGroup>
<CodeRoot Condition="$(CodeRoot) == ''">.</CodeRoot>
<FSharpAnalyzersOtherFlags>--analyzers-path &quot;$(PkgG-Research_FSharp_Analyzers)/analyzers/dotnet/fs&quot;</FSharpAnalyzersOtherFlags>
<FSharpAnalyzersOtherFlags>$(FSharpAnalyzersOtherFlags) --analyzers-path &quot;$(PkgIonide_Analyzers)/analyzers/dotnet/fs&quot;</FSharpAnalyzersOtherFlags>
<FSharpAnalyzersOtherFlags>$(FSharpAnalyzersOtherFlags) --exclude-analyzer PartialAppAnalyzer</FSharpAnalyzersOtherFlags>
<FSharpAnalyzersOtherFlags>$(FSharpAnalyzersOtherFlags) --treat-as-warning GRA-STRING-001 GRA-STRING-002 GRA-STRING-003 GRA-UNIONCASE-001 IONIDE-001 IONIDE-002 IONIDE-003 IONIDE-004 IONIDE-005</FSharpAnalyzersOtherFlags>
<FSharpAnalyzersOtherFlags>$(FSharpAnalyzersOtherFlags) --verbose</FSharpAnalyzersOtherFlags>
<FSharpAnalyzersOtherFlags>$(FSharpAnalyzersOtherFlags) --code-root $(CodeRoot)</FSharpAnalyzersOtherFlags>
<FSharpAnalyzersOtherFlags>$(FSharpAnalyzersOtherFlags) --report &quot;$(CodeRoot)/analysisreports/$(MSBuildProjectName)-analysis.sarif&quot;</FSharpAnalyzersOtherFlags>
</PropertyGroup>
</Project>
14 changes: 8 additions & 6 deletions Directory.Solution.targets
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
<Project>

<ItemGroup>
<ProjectsToAnalyze Include="src\**\*.fsproj" Exclude="src\Fantomas.FCS\Fantomas.FCS.fsproj"/>
<ProjectsToAnalyze Include="src/**/*.fsproj" Exclude="src/Fantomas.FCS/Fantomas.FCS.fsproj"/>
</ItemGroup>

<Target Name="AnalyzeSolution">
<Exec Command="dotnet build -c Release $(SolutionFileName)" />
<MSBuild
Projects="@(ProjectsToAnalyze)"
Targets="AnalyzeProject"
Properties="DesignTimeBuild=True;Configuration=Release;ProvideCommandLineArgs=True;SkipCompilerExecution=True" />
<PropertyGroup>
<CodeRoot>$(SolutionDir)</CodeRoot>
</PropertyGroup>
<RemoveDir Directories="$(SolutionDir)/analysisreports" />
<MSBuild Projects="@(ProjectsToAnalyze)"
Targets="AnalyzeFSharpProject"
Properties="CodeRoot=$(CodeRoot)" ContinueOnError="true" />
</Target>

</Project>
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"sdk": {
"version": "8.0.100-preview.7.23376.3",
"version": "8.0.100",
"rollForward": "latestPatch"
}
}
Loading

0 comments on commit a7d8e75

Please sign in to comment.