Skip to content

Commit 5e5d616

Browse files
committed
Implementing the Json Exporter
1 parent 0f132e0 commit 5e5d616

File tree

7 files changed

+51
-12
lines changed

7 files changed

+51
-12
lines changed

UnityEngineAnalyzer.CLI/AnalyzerReport.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
34
using Microsoft.CodeAnalysis;
45
using UnityEngineAnalyzer.CLI.Reporting;
56

@@ -53,11 +54,11 @@ public void FinalizeReport(TimeSpan duration)
5354
}
5455
}
5556

56-
public void InitializeReport(string projectFileName)
57+
public void InitializeReport(FileInfo projectFile)
5758
{
5859
foreach (var exporter in _exporters)
5960
{
60-
exporter.InitializeExporter(projectFileName);
61+
exporter.InitializeExporter(projectFile);
6162
}
6263
}
6364
}

UnityEngineAnalyzer.CLI/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static void Main(string[] args)
2929
report.AddExporter(new JsonAnalyzerExporter());
3030

3131

32-
report.InitializeReport(fileInfo.FullName);
32+
report.InitializeReport(fileInfo);
3333

3434
var tasks = new List<Task>();
3535
if (fileInfo.Exists)

UnityEngineAnalyzer.CLI/Reporting/ConsoleAnalyzerExporter.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.IO;
23

34
namespace UnityEngineAnalyzer.CLI.Reporting
45
{
@@ -46,12 +47,12 @@ public void Finish(TimeSpan duration)
4647
Console.ResetColor();
4748
}
4849

49-
public void InitializeExporter(string fileName)
50+
public void InitializeExporter(FileInfo projectFile)
5051
{
5152
Console.ForegroundColor = ConsoleColor.Green;
5253
Console.WriteLine("Unity Syntax Analyzer");
5354
Console.WriteLine();
54-
Console.WriteLine("Analyzing: {0}", fileName);
55+
Console.WriteLine("Analyzing: {0}", projectFile.FullName);
5556
Console.WriteLine();
5657
Console.ResetColor();
5758
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
using System;
2+
using System.IO;
23

34
namespace UnityEngineAnalyzer.CLI.Reporting
45
{
56
public interface IAnalyzerExporter
67
{
78
void AppendDiagnostic(DiagnosticInfo diagnosticInfo);
89
void Finish(TimeSpan duration);
9-
void InitializeExporter(string fileName);
10+
void InitializeExporter(FileInfo projectFile);
1011
}
1112
}
Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,56 @@
11
using System;
2-
using System.Collections.Generic;
2+
using System.IO;
3+
using Newtonsoft.Json;
34

45
namespace UnityEngineAnalyzer.CLI.Reporting
56
{
67
public class JsonAnalyzerExporter : IAnalyzerExporter
78
{
8-
private readonly List<DiagnosticInfo> _diagnostics = new List<DiagnosticInfo>();
9+
private JsonTextWriter _jsonWriter;
10+
private readonly JsonSerializer _jsonSerializer = new JsonSerializer();
911

1012
public void AppendDiagnostic(DiagnosticInfo diagnosticInfo)
1113
{
12-
_diagnostics.Add(diagnosticInfo);
14+
_jsonSerializer.Serialize(_jsonWriter, diagnosticInfo);
1315
}
1416

1517
public void Finish(TimeSpan duration)
1618
{
17-
Console.WriteLine("This is where we write the json file : " + _diagnostics.Count);
19+
_jsonWriter.WriteEndArray();
20+
_jsonWriter.WriteEndObject();
21+
_jsonWriter.Close();
1822
}
1923

20-
public void InitializeExporter(string fileName)
24+
public void InitializeExporter(FileInfo projectFile)
2125
{
22-
throw new NotImplementedException();
26+
if (!projectFile.Exists)
27+
{
28+
throw new ArgumentException("Project file does not exist");
29+
}
30+
31+
32+
var newFileName = projectFile.Name.Replace(projectFile.Extension, ".json");
33+
var jsonFilePath = Path.Combine(projectFile.DirectoryName, newFileName);
34+
var jsonFile = new FileInfo(jsonFilePath);
35+
36+
if (jsonFile.Exists)
37+
{
38+
jsonFile.Delete();
39+
}
40+
41+
TextWriter textWriter = new StreamWriter(jsonFile.FullName);
42+
_jsonWriter = new JsonTextWriter(textWriter);
43+
44+
_jsonWriter.WriteStartObject();
45+
_jsonWriter.WritePropertyName("File");
46+
_jsonWriter.WriteValue(projectFile.FullName);
47+
_jsonWriter.WritePropertyName("Date");
48+
_jsonWriter.WriteValue(DateTime.Now);
49+
_jsonWriter.WritePropertyName("Diagnostics");
50+
_jsonWriter.WriteStartArray();
51+
52+
53+
_jsonSerializer.Formatting = Formatting.Indented;
2354
}
2455
}
2556
}

UnityEngineAnalyzer.CLI/UnityEngineAnalyzer.CLI.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@
6161
<HintPath>..\packages\Microsoft.CodeAnalysis.Workspaces.Common.1.3.2\lib\net45\Microsoft.CodeAnalysis.Workspaces.Desktop.dll</HintPath>
6262
<Private>True</Private>
6363
</Reference>
64+
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
65+
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
66+
<Private>True</Private>
67+
</Reference>
6468
<Reference Include="System" />
6569
<Reference Include="System.Collections.Immutable, Version=1.1.37.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
6670
<HintPath>..\packages\System.Collections.Immutable.1.1.37\lib\dotnet\System.Collections.Immutable.dll</HintPath>

UnityEngineAnalyzer.CLI/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<package id="Microsoft.CodeAnalysis.VisualBasic.Workspaces" version="1.3.2" targetFramework="net452" />
1010
<package id="Microsoft.CodeAnalysis.Workspaces.Common" version="1.3.2" targetFramework="net452" />
1111
<package id="Microsoft.Composition" version="1.0.27" targetFramework="net452" />
12+
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net452" />
1213
<package id="System.Collections" version="4.0.0" targetFramework="net452" />
1314
<package id="System.Collections.Immutable" version="1.1.37" targetFramework="net452" />
1415
<package id="System.Diagnostics.Debug" version="4.0.0" targetFramework="net452" />

0 commit comments

Comments
 (0)