Skip to content

Commit

Permalink
refactor: warnings in code generation
Browse files Browse the repository at this point in the history
  • Loading branch information
matkoch committed Dec 24, 2024
1 parent 9804aeb commit 0b312ca
Showing 1 changed file with 45 additions and 29 deletions.
74 changes: 45 additions & 29 deletions source/Nuke.Tooling.Generator/Generators/DataClassGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,51 @@ public static void Run(DataClass dataClass, ToolWriter toolWriter)
{
foreach (var property in dataClass.Properties)
{
CheckMissingValue(property);
CheckMissingSecret(property);
CheckMissingValue();
CheckMissingSecret();
if (dataClass.Properties.Count > 1)
CheckMissingPosition();

void CheckMissingValue()
{
if (property.NoArgument)
return;

if (property.Format != null && property.Format.Contains("{value}"))
return;

if (new[] { "int", "bool" }.Contains(property.Type))
return;

Log.Warning("Property {ClassName}.{PropertyName} doesn't contain '{{value}}'", property.DataClass.Name, property.Name);
}

void CheckMissingSecret()
{
if (property.Secret.HasValue)
return;

if (!property.Name.ContainsOrdinalIgnoreCase("key") &&
!property.Name.ContainsOrdinalIgnoreCase("password") &&
!property.Name.ContainsOrdinalIgnoreCase("token"))
return;

Log.Warning("Property {ClassName}.{PropertyName} should have explicit secret definition", property.DataClass.Name, property.Name);
}

void CheckMissingPosition()
{
if (property.NoArgument)
return;

if (!property.Format.StartsWith("{"))
return;

if (property.Position != null)
return;

Log.Warning("Property {ClassName}.{PropertyName} does not have a position", property.DataClass.Name, property.Name);
}
}
}

Expand Down Expand Up @@ -66,33 +109,6 @@ string GetCommandAttribute()
}
}

private static void CheckMissingValue(Property property)
{
if (property.NoArgument)
return;

if (property.Format != null && property.Format.Contains("{value}"))
return;

if (new[] { "int", "bool" }.Contains(property.Type))
return;

Log.Warning("Property {ClassName}.{PropertyName} doesn't contain '{{value}}'", property.DataClass.Name, property.Name);
}

private static void CheckMissingSecret(Property property)
{
if (property.Secret.HasValue)
return;

if (!property.Name.ContainsOrdinalIgnoreCase("key") &&
!property.Name.ContainsOrdinalIgnoreCase("password") &&
!property.Name.ContainsOrdinalIgnoreCase("token"))
return;

Log.Warning("Property {ClassName}.{PropertyName} should have explicit secret definition", property.DataClass.Name, property.Name);
}

private static void WritePropertyDeclaration(DataClassWriter writer, Property property)
{
if (property.CustomImpl)
Expand Down

0 comments on commit 0b312ca

Please sign in to comment.