Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
273 changes: 273 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,279 @@ csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false

# analyzers
dotnet_diagnostic.AvoidAsyncVoid.severity = suggestion

dotnet_diagnostic.CA1000.severity = none
dotnet_diagnostic.CA1001.severity = error
dotnet_diagnostic.CA1009.severity = error
dotnet_diagnostic.CA1016.severity = error
dotnet_diagnostic.CA1030.severity = none
dotnet_diagnostic.CA1031.severity = none
dotnet_diagnostic.CA1033.severity = none
dotnet_diagnostic.CA1036.severity = none
dotnet_diagnostic.CA1049.severity = error
dotnet_diagnostic.CA1056.severity = suggestion
dotnet_diagnostic.CA1060.severity = error
dotnet_diagnostic.CA1061.severity = error
dotnet_diagnostic.CA1063.severity = error
dotnet_diagnostic.CA1065.severity = error
dotnet_diagnostic.CA1301.severity = error
dotnet_diagnostic.CA1303.severity = none
dotnet_diagnostic.CA1308.severity = none
dotnet_diagnostic.CA1400.severity = error
dotnet_diagnostic.CA1401.severity = error
dotnet_diagnostic.CA1403.severity = error
dotnet_diagnostic.CA1404.severity = error
dotnet_diagnostic.CA1405.severity = error
dotnet_diagnostic.CA1410.severity = error
dotnet_diagnostic.CA1415.severity = error
dotnet_diagnostic.CA1507.severity = error
dotnet_diagnostic.CA1710.severity = suggestion
dotnet_diagnostic.CA1724.severity = none
dotnet_diagnostic.CA1810.severity = none
dotnet_diagnostic.CA1821.severity = error
dotnet_diagnostic.CA1900.severity = error
dotnet_diagnostic.CA1901.severity = error
dotnet_diagnostic.CA2000.severity = none
dotnet_diagnostic.CA2002.severity = error
dotnet_diagnostic.CA2007.severity = none
dotnet_diagnostic.CA2100.severity = error
dotnet_diagnostic.CA2101.severity = error
dotnet_diagnostic.CA2108.severity = error
dotnet_diagnostic.CA2111.severity = error
dotnet_diagnostic.CA2112.severity = error
dotnet_diagnostic.CA2114.severity = error
dotnet_diagnostic.CA2116.severity = error
dotnet_diagnostic.CA2117.severity = error
dotnet_diagnostic.CA2122.severity = error
dotnet_diagnostic.CA2123.severity = error
dotnet_diagnostic.CA2124.severity = error
dotnet_diagnostic.CA2126.severity = error
dotnet_diagnostic.CA2131.severity = error
dotnet_diagnostic.CA2132.severity = error
dotnet_diagnostic.CA2133.severity = error
dotnet_diagnostic.CA2134.severity = error
dotnet_diagnostic.CA2137.severity = error
dotnet_diagnostic.CA2138.severity = error
dotnet_diagnostic.CA2140.severity = error
dotnet_diagnostic.CA2141.severity = error
dotnet_diagnostic.CA2146.severity = error
dotnet_diagnostic.CA2147.severity = error
dotnet_diagnostic.CA2149.severity = error
dotnet_diagnostic.CA2200.severity = error
dotnet_diagnostic.CA2202.severity = error
dotnet_diagnostic.CA2207.severity = error
dotnet_diagnostic.CA2212.severity = error
dotnet_diagnostic.CA2213.severity = error
dotnet_diagnostic.CA2214.severity = error
dotnet_diagnostic.CA2216.severity = error
dotnet_diagnostic.CA2220.severity = error
dotnet_diagnostic.CA2229.severity = error
dotnet_diagnostic.CA2231.severity = error
dotnet_diagnostic.CA2232.severity = error
dotnet_diagnostic.CA2235.severity = error
dotnet_diagnostic.CA2236.severity = error
dotnet_diagnostic.CA2237.severity = error
dotnet_diagnostic.CA2238.severity = error
dotnet_diagnostic.CA2240.severity = error
dotnet_diagnostic.CA2241.severity = error
dotnet_diagnostic.CA2242.severity = error

dotnet_diagnostic.RCS1001.severity = error
dotnet_diagnostic.RCS1018.severity = error
dotnet_diagnostic.RCS1037.severity = error
dotnet_diagnostic.RCS1055.severity = error
dotnet_diagnostic.RCS1062.severity = error
dotnet_diagnostic.RCS1066.severity = error
dotnet_diagnostic.RCS1069.severity = error
dotnet_diagnostic.RCS1071.severity = error
dotnet_diagnostic.RCS1074.severity = error
dotnet_diagnostic.RCS1090.severity = error
dotnet_diagnostic.RCS1138.severity = error
dotnet_diagnostic.RCS1139.severity = error
dotnet_diagnostic.RCS1163.severity = suggestion
dotnet_diagnostic.RCS1168.severity = suggestion
dotnet_diagnostic.RCS1188.severity = error
dotnet_diagnostic.RCS1201.severity = error
dotnet_diagnostic.RCS1207.severity = error
dotnet_diagnostic.RCS1211.severity = error
dotnet_diagnostic.RCS1507.severity = error

dotnet_diagnostic.SA1000.severity = error
dotnet_diagnostic.SA1001.severity = error
dotnet_diagnostic.SA1002.severity = error
dotnet_diagnostic.SA1003.severity = error
dotnet_diagnostic.SA1004.severity = error
dotnet_diagnostic.SA1005.severity = error
dotnet_diagnostic.SA1006.severity = error
dotnet_diagnostic.SA1007.severity = error
dotnet_diagnostic.SA1008.severity = error
dotnet_diagnostic.SA1009.severity = error
dotnet_diagnostic.SA1010.severity = error
dotnet_diagnostic.SA1011.severity = error
dotnet_diagnostic.SA1012.severity = error
dotnet_diagnostic.SA1013.severity = error
dotnet_diagnostic.SA1014.severity = error
dotnet_diagnostic.SA1015.severity = error
dotnet_diagnostic.SA1016.severity = error
dotnet_diagnostic.SA1017.severity = error
dotnet_diagnostic.SA1018.severity = error
dotnet_diagnostic.SA1019.severity = error
dotnet_diagnostic.SA1020.severity = error
dotnet_diagnostic.SA1021.severity = error
dotnet_diagnostic.SA1022.severity = error
dotnet_diagnostic.SA1023.severity = error
dotnet_diagnostic.SA1024.severity = error
dotnet_diagnostic.SA1025.severity = error
dotnet_diagnostic.SA1026.severity = error
dotnet_diagnostic.SA1027.severity = error
dotnet_diagnostic.SA1028.severity = error
dotnet_diagnostic.SA1100.severity = error
dotnet_diagnostic.SA1101.severity = none
dotnet_diagnostic.SA1102.severity = error
dotnet_diagnostic.SA1103.severity = error
dotnet_diagnostic.SA1104.severity = error
dotnet_diagnostic.SA1105.severity = error
dotnet_diagnostic.SA1106.severity = error
dotnet_diagnostic.SA1107.severity = error
dotnet_diagnostic.SA1108.severity = error
dotnet_diagnostic.SA1110.severity = error
dotnet_diagnostic.SA1111.severity = error
dotnet_diagnostic.SA1112.severity = error
dotnet_diagnostic.SA1113.severity = error
dotnet_diagnostic.SA1114.severity = error
dotnet_diagnostic.SA1115.severity = error
dotnet_diagnostic.SA1116.severity = error
dotnet_diagnostic.SA1117.severity = error
dotnet_diagnostic.SA1118.severity = error
dotnet_diagnostic.SA1119.severity = error
dotnet_diagnostic.SA1120.severity = error
dotnet_diagnostic.SA1121.severity = error
dotnet_diagnostic.SA1122.severity = error
dotnet_diagnostic.SA1123.severity = error
dotnet_diagnostic.SA1124.severity = error
dotnet_diagnostic.SA1125.severity = error
dotnet_diagnostic.SA1127.severity = error
dotnet_diagnostic.SA1128.severity = error
dotnet_diagnostic.SA1129.severity = error
dotnet_diagnostic.SA1130.severity = error
dotnet_diagnostic.SA1131.severity = error
dotnet_diagnostic.SA1132.severity = error
dotnet_diagnostic.SA1133.severity = error
dotnet_diagnostic.SA1134.severity = error
dotnet_diagnostic.SA1135.severity = error
dotnet_diagnostic.SA1136.severity = error
dotnet_diagnostic.SA1137.severity = error
dotnet_diagnostic.SA1139.severity = error
dotnet_diagnostic.SA1200.severity = none
dotnet_diagnostic.SA1201.severity = error
dotnet_diagnostic.SA1202.severity = error
dotnet_diagnostic.SA1203.severity = error
dotnet_diagnostic.SA1204.severity = error
dotnet_diagnostic.SA1205.severity = error
dotnet_diagnostic.SA1206.severity = error
dotnet_diagnostic.SA1207.severity = error
dotnet_diagnostic.SA1208.severity = error
dotnet_diagnostic.SA1209.severity = error
dotnet_diagnostic.SA1210.severity = error
dotnet_diagnostic.SA1211.severity = error
dotnet_diagnostic.SA1212.severity = error
dotnet_diagnostic.SA1213.severity = error
dotnet_diagnostic.SA1214.severity = error
dotnet_diagnostic.SA1216.severity = error
dotnet_diagnostic.SA1217.severity = error
dotnet_diagnostic.SA1300.severity = error
dotnet_diagnostic.SA1302.severity = error
dotnet_diagnostic.SA1303.severity = error
dotnet_diagnostic.SA1304.severity = error
dotnet_diagnostic.SA1306.severity = none
dotnet_diagnostic.SA1307.severity = error
dotnet_diagnostic.SA1308.severity = error
dotnet_diagnostic.SA1309.severity = none
dotnet_diagnostic.SA1310.severity = error
dotnet_diagnostic.SA1311.severity = none
dotnet_diagnostic.SA1312.severity = error
dotnet_diagnostic.SA1313.severity = error
dotnet_diagnostic.SA1314.severity = error
dotnet_diagnostic.SA1316.severity = none
dotnet_diagnostic.SA1400.severity = error
dotnet_diagnostic.SA1401.severity = error
dotnet_diagnostic.SA1402.severity = error
dotnet_diagnostic.SA1403.severity = error
dotnet_diagnostic.SA1404.severity = error
dotnet_diagnostic.SA1405.severity = error
dotnet_diagnostic.SA1406.severity = error
dotnet_diagnostic.SA1407.severity = error
dotnet_diagnostic.SA1408.severity = error
dotnet_diagnostic.SA1410.severity = error
dotnet_diagnostic.SA1411.severity = error
dotnet_diagnostic.SA1413.severity = none
dotnet_diagnostic.SA1500.severity = error
dotnet_diagnostic.SA1501.severity = error
dotnet_diagnostic.SA1502.severity = error
dotnet_diagnostic.SA1503.severity = error
dotnet_diagnostic.SA1504.severity = error
dotnet_diagnostic.SA1505.severity = error
dotnet_diagnostic.SA1506.severity = error
dotnet_diagnostic.SA1507.severity = error
dotnet_diagnostic.SA1508.severity = error
dotnet_diagnostic.SA1509.severity = error
dotnet_diagnostic.SA1510.severity = error
dotnet_diagnostic.SA1511.severity = error
dotnet_diagnostic.SA1512.severity = error
dotnet_diagnostic.SA1513.severity = error
dotnet_diagnostic.SA1514.severity = error
dotnet_diagnostic.SA1515.severity = error
dotnet_diagnostic.SA1516.severity = error
dotnet_diagnostic.SA1517.severity = error
dotnet_diagnostic.SA1518.severity = error
dotnet_diagnostic.SA1519.severity = error
dotnet_diagnostic.SA1520.severity = error
dotnet_diagnostic.SA1600.severity = error
dotnet_diagnostic.SA1601.severity = error
dotnet_diagnostic.SA1602.severity = error
dotnet_diagnostic.SA1604.severity = error
dotnet_diagnostic.SA1605.severity = error
dotnet_diagnostic.SA1606.severity = error
dotnet_diagnostic.SA1607.severity = error
dotnet_diagnostic.SA1608.severity = error
dotnet_diagnostic.SA1610.severity = error
dotnet_diagnostic.SA1611.severity = error
dotnet_diagnostic.SA1612.severity = error
dotnet_diagnostic.SA1613.severity = error
dotnet_diagnostic.SA1614.severity = error
dotnet_diagnostic.SA1615.severity = error
dotnet_diagnostic.SA1616.severity = error
dotnet_diagnostic.SA1617.severity = error
dotnet_diagnostic.SA1618.severity = error
dotnet_diagnostic.SA1619.severity = error
dotnet_diagnostic.SA1620.severity = error
dotnet_diagnostic.SA1621.severity = error
dotnet_diagnostic.SA1622.severity = error
dotnet_diagnostic.SA1623.severity = error
dotnet_diagnostic.SA1624.severity = error
dotnet_diagnostic.SA1625.severity = error
dotnet_diagnostic.SA1626.severity = error
dotnet_diagnostic.SA1627.severity = error
dotnet_diagnostic.SA1629.severity = error
dotnet_diagnostic.SA1633.severity = error
dotnet_diagnostic.SA1634.severity = error
dotnet_diagnostic.SA1635.severity = error
dotnet_diagnostic.SA1636.severity = error
dotnet_diagnostic.SA1637.severity = none
dotnet_diagnostic.SA1638.severity = none
dotnet_diagnostic.SA1640.severity = error
dotnet_diagnostic.SA1641.severity = error
dotnet_diagnostic.SA1642.severity = error
dotnet_diagnostic.SA1643.severity = error
dotnet_diagnostic.SA1649.severity = error
dotnet_diagnostic.SA1651.severity = error

dotnet_diagnostic.SX1101.severity = error
dotnet_diagnostic.SX1309.severity = error
dotnet_diagnostic.SX1623.severity = none

# C++ Files
[*.{cpp,h,in}]
curly_bracket_next_line = true
Expand Down
8 changes: 2 additions & 6 deletions src/Directory.build.props
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
<Project>
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591;1701;1702;1705;VSX1000</NoWarn>
<Platform>AnyCPU</Platform>
<IsTestProject>$(MSBuildProjectName.Contains('Tests'))</IsTestProject>
<DebugType>embedded</DebugType>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)analyzers.ruleset</CodeAnalysisRuleSet>

<Authors>.NET Foundation and Contributors</Authors>
<Copyright>Copyright (c) .NET Foundation and Contributors</Copyright>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
Expand Down Expand Up @@ -36,9 +33,8 @@
<DebugType>Full</DebugType>
</PropertyGroup>

<PropertyGroup Condition="$(IsTestProject)">
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)analyzers.tests.ruleset</CodeAnalysisRuleSet>
<IsPackable>false</IsPackable>
<PropertyGroup Condition="'$(IsTestProject)' != ''">
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup Condition="$(IsTestProject)">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,14 @@ public DiagnosticResultLocation(string path, int line, int column)
/// <returns>Are Equal.</returns>
public static bool operator ==(DiagnosticResultLocation left, DiagnosticResultLocation right) => left.Equals(right);

/// <summary>
/// Implements the operator !=.
/// </summary>
/// <param name="left">The left.</param>
/// <param name="right">The right.</param>
/// <returns>
/// The result of the operator.
/// </returns>
public static bool operator !=(DiagnosticResultLocation left, DiagnosticResultLocation right) => !left.Equals(right);

/// <summary>
Expand Down
9 changes: 9 additions & 0 deletions src/ReactiveUI.Fody.Tests/API/ApiApprovalTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,18 @@

namespace ReactiveUI.Fody.Tests.API
{
/// <summary>
/// Tests for checking if the Fody public API is not changing.
/// We have a file checked into the repository with the approved public API.
/// If it is changing you'll need to override to make it obvious the API has changed
/// for version changing reasons.
/// </summary>
[ExcludeFromCodeCoverage]
public class ApiApprovalTests : ApiApprovalBase
{
/// <summary>
/// Checks the version API.
/// </summary>
[Fact]
public void ReactiveUIFody() => CheckApproval(typeof(ReactiveAttribute).Assembly);
}
Expand Down
11 changes: 10 additions & 1 deletion src/ReactiveUI.Fody.Tests/ApiApprovalBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,20 @@

namespace ReactiveUI.Fody.Tests
{
/// <summary>
/// Tests for API approvals.
/// </summary>
[ExcludeFromCodeCoverage]
public abstract class ApiApprovalBase
{
private static readonly Regex _removeCoverletSectionRegex = new(@"^namespace Coverlet\.Core\.Instrumentation\.Tracker.*?^}", RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.Compiled);

/// <summary>
/// Checks the assembly to detect the public API. Generates a received/approved version of the API.
/// </summary>
/// <param name="assembly">The assembly to check.</param>
/// <param name="memberName">Auto populated member name.</param>
/// <param name="filePath">Auto populated file path.</param>
protected static void CheckApproval(Assembly assembly, [CallerMemberName]string? memberName = null, [CallerFilePath]string? filePath = null)
{
var targetFrameworkName = Assembly.GetExecutingAssembly().GetTargetFrameworkName();
Expand Down Expand Up @@ -61,7 +70,7 @@ private static string Filter(string text)
return string.Join(Environment.NewLine, text.Split(
new[]
{
Environment.NewLine
Environment.NewLine,
},
StringSplitOptions.RemoveEmptyEntries)
.Where(l =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,24 @@

namespace ReactiveUI.Fody.Tests.Issues
{
public class Issue13Tests
/// <summary>
/// Tests for determining if a chain expression works.
/// </summary>
public class ChainExpressionTests
{
/// <summary>
/// Checks to make sure that if double property chaining doesn't cause a exception.
/// </summary>
[Fact]
public void AccessingAChainedObservableAsPropertyOfDoubleDoesntThrow()
{
var vm = new VM();
var vm = new TestModel();
Assert.Equal(0.0, vm.P2);
}

private class VM : ReactiveObject
private class TestModel : ReactiveObject
{
public VM()
public TestModel()
{
Observable.Return(0.0).ToPropertyEx(this, vm => vm.P1);
this.WhenAnyValue(vm => vm.P1).ToPropertyEx(this, vm => vm.P2);
Expand Down
Loading