• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

net-daemon / netdaemon / 6682362857

29 Oct 2023 08:56AM UTC coverage: 79.505% (-1.2%) from 80.706%
6682362857

push

github

web-flow
Bump Roslynator.Analyzers from 4.5.0 to 4.6.1 (#960)

Bumps [Roslynator.Analyzers](https://github.com/dotnet/roslynator) from 4.5.0 to 4.6.1.
- [Release notes](https://github.com/dotnet/roslynator/releases)
- [Changelog](https://github.com/dotnet/roslynator/blob/main/ChangeLog.md)
- [Commits](https://github.com/dotnet/roslynator/compare/v4.5.0...v4.6.1)

---
updated-dependencies:
- dependency-name: Roslynator.Analyzers
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

802 of 1143 branches covered (0.0%)

Branch coverage included in aggregate %.

2895 of 3507 relevant lines covered (82.55%)

50.4 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.62
/src/HassModel/NetDaemon.HassModel.CodeGenerator/CodeGeneration/ServiceArguments.cs
1
using Microsoft.CodeAnalysis.CSharp;
2

3
namespace NetDaemon.HassModel.CodeGenerator;
4

5
internal record ServiceArgument
×
6
{
7
    public required string HaName { get; init; }
85✔
8
    public required Type ClrType { get; init; }
35✔
9
    public bool Required { get; init; }
60✔
10

11
    public string? Comment { get; init; }
35✔
12

13
    public string TypeName => ClrType.GetFriendlyName();
20✔
14

15
    public string ParameterTypeName => Required ? TypeName : $"{TypeName}?";
15✔
16

17
    public string PropertyName => HaName.ToValidCSharpPascalCase();
20✔
18

19
    public string ParameterName => HaName.ToValidCSharpCamelCase();
45✔
20

21
    public string ParameterDefault => Required ? "" : " = null";
15✔
22
}
23

24
internal class ServiceArguments
25
{
26
    private readonly string _serviceName;
27
    private readonly string _domain;
28

29
    public static ServiceArguments? Create(string domain, HassService service)
30
    {
31
        if (service.Fields is null || service.Fields.Count == 0)
22✔
32
        {
33
            return null;
10✔
34
        }
35

36
        return new ServiceArguments(domain, service.Service, service.Fields);
12✔
37
    }
38

39
    private ServiceArguments(string domain, string serviceName, IReadOnlyCollection<HassServiceField> serviceFields)
12✔
40
    {
41
        _domain = domain;
12✔
42
        _serviceName = serviceName!;
12✔
43
        Arguments = serviceFields.Select(HassServiceArgumentMapper.Map).ToArray();
12✔
44
    }
12✔
45

46
    public IEnumerable<ServiceArgument> Arguments { get; }
40✔
47

48
    public string TypeName => $"{_domain.ToValidCSharpPascalCase()}{GetServiceMethodName(_serviceName)}Parameters";
28✔
49

50
    public string GetParametersList()
51
    {
52
        var argumentList = Arguments.OrderByDescending(arg => arg.Required);
27✔
53

54
        var anonymousVariableStr = argumentList.Select(x => $"{x.ParameterTypeName} {EscapeIfRequired(x.ParameterName)}{x.ParameterDefault}");
27✔
55

56
        return string.Join(", ", anonymousVariableStr);
12✔
57
    }
58

59
    public string GetNewServiceArgumentsTypeExpression()
60
    {
61
        var propertyInitializers = Arguments.Select(x => $"{x.PropertyName} = {EscapeIfRequired(x.ParameterName)}");
27✔
62

63
        return $"new {TypeName} {{  { string.Join(", ", propertyInitializers) }  }}";
12✔
64
    }
65
    
66
    private static string EscapeIfRequired(string name)
67
    {
68
        var match = SyntaxFacts.GetKeywordKind(name) != SyntaxKind.None ||
30✔
69
                    SyntaxFacts.GetContextualKeywordKind(name) != SyntaxKind.None;
30✔
70

71
        return match ? "@" + name : name;
30✔
72
    }
73
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc