Skip to content

Commit

Permalink
Merge pull request #93 from Lombiq/issue/OSOE-179
Browse files Browse the repository at this point in the history
OSOE-179: Migrate to .editorconfig from ruleset files
  • Loading branch information
Piedone authored Oct 16, 2023
2 parents 5bcb1a3 + 9f7729b commit 239fae8
Show file tree
Hide file tree
Showing 55 changed files with 1,269 additions and 880 deletions.
49 changes: 33 additions & 16 deletions ConvertTo-Nuspec.ps1
Original file line number Diff line number Diff line change
@@ -1,24 +1,41 @@
param($Version)

$projectPath = Join-Path $PWD Lombiq.Analyzers
function Read-Xml([string]$File) { [xml](Get-Content (Join-Path $projectPath $File)) }
$packages = @(
'Lombiq.Analyzers',
'Lombiq.Analyzers.NetFx',
'Lombiq.Analyzers.OrchardCore',
'Lombiq.Analyzers.Orchard1',
'Lombiq.Analyzers.VisualStudioExtension'
)

$nuspec = Read-Xml Lombiq.Analyzers.nuspec.template
$dependencies = $nuspec.package.metadata.dependencies
# Iterate through the packages to replace
foreach ($package in $packages)
{
$projectPath = Join-Path $PWD $package
function Read-Xml([string]$File) { [xml](Get-Content $File) }

$nuspec.package.metadata.GetElementsByTagName('version')[0].InnerXml = $Version
$nuspec = Read-Xml (Join-Path $projectPath "$package.nuspec.template")
$dependencies = $nuspec.package.metadata.dependencies

foreach ($dependency in (Read-Xml CommonPackages.props).Project.ItemGroup.AnalyzerPackage)
{
$id = $dependency.Include
if (-not $id) { continue }
$nuspec.package.metadata.GetElementsByTagName('version')[0].InnerXml = $Version

$node = $nuspec.CreateElement('dependency')
$node.SetAttribute('id', $id)
$node.SetAttribute('version', $dependency.Version)
# AnalyzerPackages.props is optional.
$analyzerPackagesPropsFile = Join-Path $projectPath 'AnalyzerPackages.props'
if (Test-Path $analyzerPackagesPropsFile)
{
foreach ($dependency in (Read-Xml $analyzerPackagesPropsFile).Project.ItemGroup.AnalyzerPackage)
{
$id = $dependency.Include
if (-not $id) { continue }

$dependencies.AppendChild($node)
}
$node = $nuspec.CreateElement('dependency')
$node.SetAttribute('id', $id)
$node.SetAttribute('version', $dependency.Version)

$outputPath = Join-Path $projectPath Lombiq.Analyzers.nuspec
$nuspec.Save($outputPath)
$dependencies.AppendChild($node)
}
}

$outputPath = Join-Path $projectPath "$package.nuspec"
$nuspec.Save($outputPath)
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<Project>
<PropertyGroup>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)orchard1.ruleset</CodeAnalysisRuleSet>
<!-- Simply <GenerateDocumentationFile>true</GenerateDocumentationFile> can't be used because that's for SDK
projects only, see: https://stackoverflow.com/a/47118584/220230. -->
<DocumentationDir>$(OutputPath)</DocumentationDir>
Expand Down Expand Up @@ -28,7 +27,12 @@
<_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)CommonPackages.props" />
<ItemGroup>
<GlobalAnalyzerConfigFiles Include="$(MSBuildThisFileDirectory)../Lombiq.Analyzers/Lombiq.Analyzers.globalconfig" />
<GlobalAnalyzerConfigFiles Include="$(MSBuildThisFileDirectory)Lombiq.Analyzers.NetFx.globalconfig" />
</ItemGroup>

<Import Project="$(MSBuildThisFileDirectory)../Lombiq.Analyzers/AnalyzerPackages.props" />

<ItemGroup>
<!-- Fixing the <"error CS8032: An instance of analyzer Microsoft.CodeAnalysis.[...]Analyzer cannot be created from
Expand All @@ -49,8 +53,8 @@
</ItemGroup>

<ItemGroup>
<AdditionalFiles Include="$(MSBuildThisFileDirectory)stylecop.json" Link="stylecop.json" />
<AdditionalFiles Include="$(MSBuildThisFileDirectory)SonarLint.xml" Link="SonarLint.xml" />
<AdditionalFiles Include="$(MSBuildThisFileDirectory)../Lombiq.Analyzers/stylecop.json" Link="stylecop.json" />
<AdditionalFiles Include="$(MSBuildThisFileDirectory)../Lombiq.Analyzers/SonarLint.xml" Link="SonarLint.xml" />
</ItemGroup>

<Target Name="DisableAnalyzers" BeforeTargets="CoreCompile" Condition="'$(RunCodeAnalysis)' == 'false'">
Expand All @@ -60,6 +64,6 @@
</Target>

<Target Name="Copy editorconfig" AfterTargets="AfterResolveReferences">
<Copy SourceFiles="$(MSBuildThisFileDirectory).editorconfig" DestinationFolder="$(MSBuildProjectDirectory)" SkipUnchangedFiles="true" />
<Copy SourceFiles="$(MSBuildThisFileDirectory)../Lombiq.Analyzers/.editorconfig" DestinationFolder="$(MSBuildProjectDirectory)" SkipUnchangedFiles="true" />
</Target>
</Project>
13 changes: 13 additions & 0 deletions Lombiq.Analyzers.NetFx/License.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Copyright © 2020, [Lombiq Technologies Ltd.](https://lombiq.com)

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 changes: 36 additions & 0 deletions Lombiq.Analyzers.NetFx/Lombiq.Analyzers.NetFx.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<DefaultItemExcludes>$(DefaultItemExcludes);.git*;</DefaultItemExcludes>
<!-- This is duplicated with Lombiq.Analyzers.NetFx.nuspec.template but is needed for the NuGet publishing workflow
not to throw a warning. See https://github.com/Lombiq/GitHub-Actions/issues/236. -->
<PackageLicenseFile>License.md</PackageLicenseFile>
</PropertyGroup>

<!-- This project is built with an externally generated .nuspec file so NuGet-related properties are not needed here.
The package properties can be updated in the Lombiq.Analyzers.NetFx.nuspec.template file. The dependencies are
created from the AnalyzerPackages.props file, although if needed further dependencies can be added to
Lombiq.Analyzers.NetFx.nuspec.template as well.
-->

<ItemGroup>
<!-- Note how these files need to be linked form Lombiq.Analyzers, without a dependency so .NET Framework projects
don't get .NET configs from its Build.props. -->
<None Include="..\Lombiq.Analyzers\.editorconfig" Link=".editorconfig" Pack="true" PackagePath="" />
<None Include="..\Lombiq.Analyzers\AnalyzerPackages.props" Link="AnalyzerPackages.props" Pack="true" PackagePath="" />
<None Include="..\Lombiq.Analyzers\Lombiq.Analyzers.globalconfig" Link="Lombiq.Analyzers.globalconfig" Pack="true" PackagePath="" />
<None Include="..\Lombiq.Analyzers\SonarLint.xml" Link="SonarLint.xml" Pack="true" PackagePath="" />
<None Include="..\Lombiq.Analyzers\stylecop.json" Link="stylecop.json" Pack="true" PackagePath="" />
<None Include="License.md" Pack="true" PackagePath="" />
<None Include="Readme.md" Link="Readme.md" />
<None Include="NuGetIcon.png" Pack="true" PackagePath="" />
<None Include="build\**" Pack="true" PackagePath="build\" />
<None Include=".editorconfig" Pack="true" PackagePath="" />
<None Include="*.props" Pack="true" PackagePath="" />
<None Include="*.globalconfig" Pack="true" PackagePath="" />
<None Include="*.xml" Pack="true" PackagePath="" />
<None Include="*.json" Pack="true" PackagePath="" />
</ItemGroup>

</Project>
13 changes: 13 additions & 0 deletions Lombiq.Analyzers.NetFx/Lombiq.Analyzers.NetFx.globalconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
is_global = true
global_level = 10

# General code analysis rules for .NET Framework projects, extending Lombiq.Analyzers.globalconfig.

# To get Visual Studio GUI support for configuring these rules, put it into the solution's startup project's folder and
# rename it to .editorconfig. This should eventually not be necessary, see https://github.com/dotnet/roslyn/issues/70326.

# Microsoft.CodeAnalysis.NetAnalyzers rules
dotnet_diagnostic.CA1016.severity = none

# SonarAnalyzer.CSharp rules
dotnet_diagnostic.S3904.severity = none
30 changes: 30 additions & 0 deletions Lombiq.Analyzers.NetFx/Lombiq.Analyzers.NetFx.nuspec.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>Lombiq.Analyzers.NetFx</id>
<version>$version$</version>
<title>Lombiq .NET Analyzers for .NET Framework</title>
<authors>Lombiq Technologies</authors>
<license type="file">License.md</license>
<licenseUrl>https://aka.ms/deprecateLicenseUrl</licenseUrl>
<icon>NuGetIcon.png</icon>
<projectUrl>https://github.com/Lombiq/.NET-Analyzers/blob/dev/Lombiq.Analyzers.NetFx</projectUrl>
<description>Lombiq .NET Analyzers for .NET Framework: .NET code analyzers and code convention settings for .NET Framework projects. See the project website for detailed documentation.</description>
<copyright>Copyright © 2020, Lombiq Technologies Ltd.</copyright>
<tags>NetFx Lombiq AspNetCore CodeAnalysis DotNetAnalyzers Analyzer Analyzers Diagnostic Roslyn Refactoring AsyncFixer Meziantou.Analyzer StyleCop</tags>
<repository type="git" url="https://github.com/Lombiq/.NET-Analyzers" commit="86d47a37c4d37bb5d8417eae9adfc4680e09fd91" />
<dependencies>
<!-- Dependencies come here from AnalyzerPackages.props. Lombiq.Analyzers is intentionally not a dependency
because then its Build.props would be applied to .NET Framework projects too. -->
</dependencies>
<developmentDependency>true</developmentDependency>
</metadata>
<files>
<!-- Workaround for NuGet's validation caused by the presence of these files:
- bin/Release/netstandard2.0/Lombiq.Analyzers.NetFx.dll
- obj/Release/netstandard2.0/Lombiq.Analyzers.NetFx.dll
The cause is probably that we don't actually do anything in this csproj, it only exists because we need an entry
point for `dotnet pack` (unlike the older `nuget pack` tooling, which worked with just the .nuspec alone).-->
<file src="**" exclude="**\bin\**;**\obj\Release\**" />
</files>
</package>
Binary file added Lombiq.Analyzers.NetFx/NuGetIcon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions Lombiq.Analyzers.NetFx/Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Lombiq .NET Analyzers for .NET Framework

## About

.NET code analyzers and code convention settings for .NET Framework projects. See [the root Readme](../Readme.md) for details on how to use the project.
7 changes: 7 additions & 0 deletions Lombiq.Analyzers.NetFx/build/Lombiq.Analyzers.NetFx.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<Project>
<PropertyGroup>
<NuGetBuild>true</NuGetBuild>
</PropertyGroup>

<Import Project="../Build.props"/>
</Project>
7 changes: 7 additions & 0 deletions Lombiq.Analyzers.Orchard1/Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<Project>
<ItemGroup>
<GlobalAnalyzerConfigFiles Include="$(MSBuildThisFileDirectory)Lombiq.Analyzers.Orchard1.globalconfig" />
<GlobalAnalyzerConfigFiles Include="$(MSBuildThisFileDirectory)../Lombiq.Analyzers.OrchardCore/Lombiq.Analyzers.OrchardCore.globalconfig" />
</ItemGroup>
<Import Project="$(MSBuildThisFileDirectory)../Lombiq.Analyzers.NetFx/Build.props" Condition="'$(NuGetBuild)' != 'true'" />
</Project>
13 changes: 13 additions & 0 deletions Lombiq.Analyzers.Orchard1/License.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Copyright © 2020, [Lombiq Technologies Ltd.](https://lombiq.com)

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 changes: 31 additions & 0 deletions Lombiq.Analyzers.Orchard1/Lombiq.Analyzers.Orchard1.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<DefaultItemExcludes>$(DefaultItemExcludes);.git*;</DefaultItemExcludes>
<!-- This is duplicated with Lombiq.Analyzers.Orchard1.nuspec.template but is needed for the NuGet publishing
workflow not to throw a warning. See https://github.com/Lombiq/GitHub-Actions/issues/236. -->
<PackageLicenseFile>License.md</PackageLicenseFile>
</PropertyGroup>

<!-- This project is built with an externally generated .nuspec file so NuGet-related properties are not needed here.
The package properties can be updated in the Lombiq.Analyzers.Orchard1.nuspec.template file. The dependencies are
created from the AnalyzerPackages.props file, although if needed further dependencies can be added to
Lombiq.Analyzers.Orchard1.nuspec.template as well.
-->

<ItemGroup>
<None Include="..\Lombiq.Analyzers.OrchardCore\Lombiq.Analyzers.OrchardCore.globalconfig" Link="Lombiq.Analyzers.OrchardCore.globalconfig" Pack="true" PackagePath="" />
<None Include="License.md" Pack="true" PackagePath="" />
<None Include="Readme.md" Link="Readme.md" />
<None Include="NuGetIcon.png" Pack="true" PackagePath="" />
<None Include="build\**" Pack="true" PackagePath="build\" />
<None Include="*.props" Pack="true" PackagePath="" />
<None Include="*.globalconfig" Pack="true" PackagePath="" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Lombiq.Analyzers.NetFx\Lombiq.Analyzers.NetFx.csproj" />
</ItemGroup>

</Project>
17 changes: 17 additions & 0 deletions Lombiq.Analyzers.Orchard1/Lombiq.Analyzers.Orchard1.globalconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
is_global = true
global_level = 20

# Code analysis rules for Orchard 1 projects, extending Lombiq.Analyzers.NetFx.globalconfig and
# Lombiq.Analyzers.OrchardCore.globalconfig.

# To get Visual Studio GUI support for configuring these rules, put it into the solution's startup project's folder and
# rename it to .editorconfig. This should eventually not be necessary, see https://github.com/dotnet/roslyn/issues/70326.

# Microsoft.CodeAnalysis.NetAnalyzers rules
dotnet_diagnostic.CA3147.severity = none

# SecurityCodeScan.VS2019 rules
dotnet_diagnostic.SCS0016.severity = none

# SonarAnalyzer.CSharp rules
dotnet_diagnostic.S4564.severity = none
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>Lombiq.Analyzers.Orchard1</id>
<version>$version$</version>
<title>Lombiq .NET Analyzers for Orchard 1</title>
<authors>Lombiq Technologies</authors>
<license type="file">License.md</license>
<licenseUrl>https://aka.ms/deprecateLicenseUrl</licenseUrl>
<icon>NuGetIcon.png</icon>
<projectUrl>https://github.com/Lombiq/.NET-Analyzers/blob/dev/Lombiq.Analyzers.Orchard1</projectUrl>
<description>Lombiq .NET Analyzers for Orchard 1: .NET code analyzers and code convention settings for Orchard 1 (https://orchardcore.net/orchardcms) apps. See the project website for detailed documentation.</description>
<copyright>Copyright © 2020, Lombiq Technologies Ltd.</copyright>
<tags>Orchard Lombiq AspNet CodeAnalysis DotNetAnalyzers Analyzer Analyzers Diagnostic Roslyn Refactoring AsyncFixer Meziantou.Analyzer StyleCop</tags>
<repository type="git" url="https://github.com/Lombiq/.NET-Analyzers" commit="86d47a37c4d37bb5d8417eae9adfc4680e09fd91" />
<dependencies>
<!-- Dependencies come here from AnalyzerPackages.props too. -->
<dependency id="Lombiq.Analyzers.NetFx" version="$version$" />
</dependencies>
<developmentDependency>true</developmentDependency>
</metadata>
<files>
<!-- Workaround for NuGet's validation caused by the presence of these files:
- bin/Release/netstandard2.0/Lombiq.Analyzers.Orchard1.dll
- obj/Release/netstandard2.0/Lombiq.Analyzers.Orchard1.dll
The cause is probably that we don't actually do anything in this csproj, it only exists because we need an entry
point for `dotnet pack` (unlike the older `nuget pack` tooling, which worked with just the .nuspec alone).-->
<file src="**" exclude="**\bin\**;**\obj\Release\**" />
</files>
</package>
Binary file added Lombiq.Analyzers.Orchard1/NuGetIcon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions Lombiq.Analyzers.Orchard1/Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Lombiq .NET Analyzers for Orchard 1

## About

.NET code analyzers and code convention settings for [Orchard 1](https://orchardcore.net/orchardcms) projects. See [the root Readme](../Readme.md) for details on how to use the project.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<Project>
<PropertyGroup>
<NuGetBuild>true</NuGetBuild>
</PropertyGroup>

<Import Project="../Build.props"/>
</Project>
6 changes: 6 additions & 0 deletions Lombiq.Analyzers.OrchardCore/Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<Project>
<ItemGroup>
<GlobalAnalyzerConfigFiles Include="$(MSBuildThisFileDirectory)Lombiq.Analyzers.OrchardCore.globalconfig" />
</ItemGroup>
<Import Project="$(MSBuildThisFileDirectory)../Lombiq.Analyzers/Build.props" Condition="'$(NuGetBuild)' != 'true'" />
</Project>
13 changes: 13 additions & 0 deletions Lombiq.Analyzers.OrchardCore/License.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Copyright © 2020, [Lombiq Technologies Ltd.](https://lombiq.com)

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

- Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Loading

0 comments on commit 239fae8

Please sign in to comment.