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

Sholtee / proxygen / 869

25 Nov 2023 07:40AM UTC coverage: 94.839% (-0.2%) from 95.021%
869

push

appveyor

Sholtee
eat IO errors during logging

2499 of 2635 relevant lines covered (94.84%)

5.6 hits per line

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

89.29
/SRC/Private/Extensions/UnitSyntaxFactoryBaseExtensions.cs
1
/********************************************************************************
2
* UnitSyntaxFactoryBaseExtensions.cs                                            *
3
*                                                                               *
4
* Author: Denes Solti                                                           *
5
********************************************************************************/
6
using System;
7
using System.Diagnostics;
8
using System.IO;
9
using System.Linq;
10
using System.Threading;
11

12
using Microsoft.CodeAnalysis;
13
using Microsoft.CodeAnalysis.CSharp.Syntax;
14

15
namespace Solti.Utils.Proxy.Internals
16
{
17
    internal static class UnitSyntaxFactoryBaseExtensions
18
    {
19
        public static SourceCode GetSourceCode(this UnitSyntaxFactoryBase src, in CancellationToken cancellation) => new
6✔
20
        (
21
            src.GetHint(),
22
            src.ResolveUnitAndDump(cancellation)
23
        );
24

25
        public static string GetHint(this UnitSyntaxFactoryBase src) => $"{src.ExposedClass}.cs";
6✔
26

27
        public static CompilationUnitSyntax ResolveUnitAndDump(this UnitSyntaxFactoryBase src, CancellationToken cancellation) 
28
        {
6✔
29
            CompilationUnitSyntax unit = src.ResolveUnit(null!, cancellation);
6✔
30

31
            string? sourceDump = WorkingDirectories.Instance.SourceDump;
6✔
32

33
            if (sourceDump is not null)
6✔
34
            {
4✔
35
                string hint = src.GetHint();
4✔
36

37
                Directory.CreateDirectory(sourceDump);
4✔
38

39
                Log(Path.Combine(sourceDump, hint), unit.NormalizeWhitespace(eol: Environment.NewLine).ToFullString(), cancellation);
4✔
40

41
                if (src.ReferenceCollector is not null)
4✔
42
                {
4✔
43
                    Log
4✔
44
                    (
45
                        Path.Combine(sourceDump, $"{hint}.references"),
46
                        string.Join
47
                        (
48
                            Environment.NewLine,
49
                            src
50
                                .ReferenceCollector
51
                                .References
52
                                .Select(static @ref => $"{@ref.Name}: {@ref.Location ?? "NULL"}")
4✔
53
                        ),
54
                        cancellation
55
                    );
56
                }
4✔
57

58
                static void Log(string file, string data, CancellationToken cancellation)
59
                {
4✔
60
                    try
61
                    {
4✔
62
                        using StreamWriter log = File.CreateText(file);
4✔
63
                        log.AutoFlush = true;
4✔
64
                        log.Write(data, cancellation: cancellation);
4✔
65
                    }
4✔
66
                    catch (IOException ex)
×
67
                    {
×
68
                        Trace.TraceWarning($"File ({file}) could not be dumped: ${ex.Message}");
69
                    }
×
70
                }
4✔
71
            }
4✔
72

73
            return unit;
6✔
74
        }
6✔
75
    }
76
}
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

© 2026 Coveralls, Inc