Skip to content

Commit e942c8f

Browse files
committed
Turning on more analyzers in code
1 parent c556379 commit e942c8f

21 files changed

+84
-65
lines changed

.editorconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,12 @@ dotnet_style_require_accessibility_modifiers = for_non_interface_members:warning
232232
# Use file scoped namespaces
233233
csharp_style_namespace_declarations = file_scoped:warning
234234

235+
# CA1019: Define accessors for attribute arguments
236+
dotnet_diagnostic.CA1019.severity = none
237+
238+
# IDE0305: Simplify collection initialization
239+
dotnet_diagnostic.IDE0305.severity = none
240+
235241
# Verify settings
236242
[*.{received,verified}.{cs,txt}]
237243
charset = "utf-8-bom"

src/AutoCtor.Roslyn3.11/AutoConstructSourceGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void Execute(GeneratorExecutionContext context)
5656
}
5757

5858
var models = (
59-
receiver.TypeModels?.ToImmutableArray() ?? ImmutableArray<TypeModel>.Empty,
59+
receiver.TypeModels.ToImmutableArray(),
6060
receiver.MarkedMethods?.ToImmutableArray() ?? ImmutableArray<PostCtorModel>.Empty
6161
);
6262
Emitter.GenerateSource(context, (models, enableGuards));

src/Directory.Build.props

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
<Project>
22

33
<PropertyGroup>
4-
<LangVersion>latest</LangVersion>
5-
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
64
<ImplicitUsings>enable</ImplicitUsings>
75
<Nullable>enable</Nullable>
8-
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
6+
<LangVersion>latest</LangVersion>
97
<UseArtifactsOutput>true</UseArtifactsOutput>
108
<TestingPlatformDotnetTestSupport>true</TestingPlatformDotnetTestSupport>
119
</PropertyGroup>
1210

11+
<PropertyGroup>
12+
<AnalysisLevel>latest</AnalysisLevel>
13+
<AnalysisMode>all</AnalysisMode>
14+
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
15+
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
16+
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
17+
</PropertyGroup>
18+
1319
<ItemGroup>
1420
<Using Include="System" />
1521
<Using Include="System.Collections.Generic" />

src/Shared/AutoConstructSourceGenerator/Emitter.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public static void GenerateSource(
6969

7070
var postCtorMethods = input.Models.PostCtorMethods
7171
.Where(m => m.TypeKey == type.TypeKey)
72-
.ToList();
72+
.ToImmutableArray();
7373

7474
var (source, parameters) = GenerateSource(context, type, postCtorMethods, baseParameters, input.Guards);
7575

@@ -85,7 +85,7 @@ public static void GenerateSource(
8585
private static (SourceText?, ParameterList?) GenerateSource(
8686
EmitterContext context,
8787
TypeModel type,
88-
IEnumerable<PostCtorModel> markedPostCtorMethods,
88+
ImmutableArray<PostCtorModel> markedPostCtorMethods,
8989
IEnumerable<ParameterModel>? baseParameters,
9090
bool guards)
9191
{
@@ -201,10 +201,10 @@ private static ITypeSymbol SetGenerics(
201201

202202
private static PostCtorModel? GetPostCtorMethod(
203203
EmitterContext context,
204-
IEnumerable<PostCtorModel> markedPostCtorMethods)
204+
ImmutableArray<PostCtorModel> markedPostCtorMethods)
205205
{
206206
// ACTR001
207-
if (markedPostCtorMethods.MoreThan(1))
207+
if (markedPostCtorMethods.Length > 1)
208208
{
209209
foreach (var m in markedPostCtorMethods)
210210
{
@@ -213,10 +213,10 @@ private static ITypeSymbol SetGenerics(
213213
return null;
214214
}
215215

216-
if (!markedPostCtorMethods.Any())
216+
if (markedPostCtorMethods.Length != 1)
217217
return null;
218218

219-
var method = markedPostCtorMethods.First();
219+
var method = markedPostCtorMethods[0];
220220

221221
// ACTR002
222222
if (!method.ReturnsVoid)

src/Shared/AutoConstructSourceGenerator/Tracking.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
namespace AutoCtor;
1+
namespace AutoCtor;
22

33
public partial class AutoConstructSourceGenerator
44
{
5+
[System.Diagnostics.CodeAnalysis.SuppressMessage(
6+
"Design", "CA1034:Nested types should not be visible",
7+
Justification = "Constants used in tests.")]
58
public static class TrackingNames
69
{
710
public static string BuildProperties => nameof(BuildProperties);

src/Shared/Helpers/CodeBuilder.InterpolatedStringHandler.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ public CodeBuilder AppendLine(bool enabled,
3232
private void AppendFormatted(IEnumerable<string> items, string? format)
3333
{
3434
if (format == "comma")
35-
AppendCommaSeparated(items);
35+
AppendCommaSeparated(items.ToList());
3636

37-
if (format == "commaindent")
38-
AppendCommaIndented(items);
37+
else if (format == "commaindent")
38+
AppendCommaIndented(items.ToList());
3939
}
4040

41-
private void AppendCommaSeparated(IEnumerable<string> items)
41+
private void AppendCommaSeparated(List<string> items)
4242
{
4343
var comma = false;
4444
foreach (var item in items)
@@ -50,7 +50,7 @@ private void AppendCommaSeparated(IEnumerable<string> items)
5050
}
5151
}
5252

53-
private void AppendCommaIndented(IEnumerable<string> items)
53+
private void AppendCommaIndented(List<string> items)
5454
{
5555
var length = items.Sum(s => s.Length);
5656
if (length < 60)
@@ -87,7 +87,7 @@ public readonly bool AppendFormatted(IEnumerable<string> items, string? format)
8787
}
8888

8989
[InterpolatedStringHandler]
90-
internal class IndentedCodeBuilderInterpolatedStringHandler(
90+
internal sealed class IndentedCodeBuilderInterpolatedStringHandler(
9191
int literalLength, int formattedCount, CodeBuilder codeBuilder, bool enabled = true)
9292
{
9393
private bool _hasIndented;

src/Shared/Helpers/CodeBuilder.Templates.cs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
using System.Reflection;
22

3-
internal partial class CodeBuilder
3+
internal sealed partial class CodeBuilder
44
{
55
private static readonly string s_assemblyName;
66
private static readonly string s_version;
77
private static readonly string? s_packageProjectUrl;
88
private static readonly string? s_gitSha;
99

10+
[System.Diagnostics.CodeAnalysis.SuppressMessage(
11+
"Performance", "CA1810:Initialize reference type static fields inline",
12+
Justification = "No static members or inheritance.")]
1013
static CodeBuilder()
1114
{
12-
var assembly = Assembly.GetAssembly(typeof(CodeBuilder));
13-
s_assemblyName = assembly?.GetCustomAttribute<AssemblyTitleAttribute>()?.Title ?? "Untitled";
14-
s_version = assembly?.GetCustomAttribute<AssemblyFileVersionAttribute>()?.Version ?? "0.0.0.0";
15-
var metadata = assembly?.GetCustomAttributes<AssemblyMetadataAttribute>()?.ToDictionary(m => m.Key, m => m.Value);
15+
var assembly = typeof(CodeBuilder).Assembly;
16+
s_assemblyName = assembly?.GetCustomAttribute<AssemblyTitleAttribute>()?.Title
17+
?? "Untitled";
18+
s_version = assembly?.GetCustomAttribute<AssemblyFileVersionAttribute>()?.Version
19+
?? "0.0.0.0";
20+
var metadata = assembly?.GetCustomAttributes<AssemblyMetadataAttribute>()?
21+
.ToDictionary(m => m.Key, m => m.Value);
1622
if (metadata != null)
1723
{
1824
metadata.TryGetValue("PackageProjectUrl", out s_packageProjectUrl);

src/Shared/Helpers/CodeBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
internal partial class CodeBuilder
55
{
66
private readonly StringBuilder _stringBuilder = new();
7-
private int _indent = 0;
7+
private int _indent;
88

99
public char IndentChar { get; set; } = '\t';
1010
public string Indent => new(IndentChar, _indent);

src/Shared/Helpers/Extensions.cs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,6 @@ internal static class Extensions
4242
return default;
4343
}
4444

45-
public static bool MoreThan<T>(this IEnumerable<T> source, int limit)
46-
{
47-
if (source is ICollection<T> collection)
48-
return collection.Count > limit;
49-
var count = 0;
50-
using var e = source.GetEnumerator();
51-
while (e.MoveNext())
52-
{
53-
count++;
54-
if (count > limit)
55-
return true;
56-
}
57-
return false;
58-
}
59-
6045
[SuppressMessage(
6146
"MicrosoftCodeAnalysisCorrectness",
6247
"RS1035:Do not use APIs banned for analyzers",

src/Shared/Models/MemberModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public static MemberModel Create(IFieldSymbol field)
2323
if (i > 0 && !char.IsLetter(field.Name[i]))
2424
i--;
2525
var friendlyName = char.IsUpper(field.Name[i])
26-
? char.ToLower(field.Name[i]) + field.Name.Substring(i + 1)
26+
? char.ToLowerInvariant(field.Name[i]) + field.Name.Substring(i + 1)
2727
: field.Name.Substring(i);
2828
friendlyName = friendlyName.EscapeKeywordIdentifier();
2929

@@ -43,7 +43,7 @@ public static MemberModel Create(IFieldSymbol field)
4343

4444
public static MemberModel Create(IPropertySymbol property)
4545
{
46-
var friendlyName = new string([char.ToLower(property.Name[0]), .. property.Name.Substring(1)]).EscapeKeywordIdentifier();
46+
var friendlyName = new string([char.ToLowerInvariant(property.Name[0]), .. property.Name.Substring(1)]).EscapeKeywordIdentifier();
4747

4848
return new MemberModel(
4949
Type: new(property.Type),

0 commit comments

Comments
 (0)