Skip to content

Commit 4eb8079

Browse files
authored
Merge pull request #18 from Kasperki/feature/UnityVersionCheck
Feature/unity version check
2 parents 1775cc5 + a933c17 commit 4eb8079

16 files changed

+210
-47
lines changed

UnityEngineAnalyzer.CLI/AnalyzerReport.cs

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

@@ -52,10 +51,10 @@ public void AppendDiagnostics(IEnumerable<Diagnostic> diagnosticResults)
5251
FileName = fileName,
5352
LineNumber = lineNumber,
5453
CharacterPosition = characterPosition,
55-
Severity = (DiagnosticInfo.DiagnosticInfoSeverity)diagnostic.Severity
54+
Severity = (DiagnosticInfo.DiagnosticInfoSeverity)diagnostic.Severity,
55+
VersionSpan = DiagnosticDescriptors.GetVersion(diagnostic.Descriptor)
5656
};
5757

58-
5958
foreach (var exporter in _exporters)
6059
{
6160
exporter.AppendDiagnostic(diagnosticInfo);
@@ -71,11 +70,11 @@ public void FinalizeReport(TimeSpan duration)
7170
}
7271
}
7372

74-
public void InitializeReport(FileInfo projectFile)
73+
public void InitializeReport(Options options)
7574
{
7675
foreach (var exporter in _exporters)
7776
{
78-
exporter.InitializeExporter(projectFile);
77+
exporter.InitializeExporter(options);
7978
}
8079
}
8180

UnityEngineAnalyzer.CLI/Options.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
using CommandLine;
22
using System.Collections.Generic;
3-
using UnityEngineAnalyzer.CLI.Reporting;
3+
using static UnityEngineAnalyzer.CLI.Reporting.DiagnosticInfo;
44

55
namespace UnityEngineAnalyzer.CLI
66
{
7-
internal class Options
7+
public class Options
88
{
99
[ValueOption(0)]
1010
public string ProjectFile { get; set; }
@@ -15,7 +15,10 @@ internal class Options
1515
[Option('c', "configuration", HelpText = "Custom json configuration to be used.")]
1616
public string ConfigurationFile { get; set; }
1717

18-
[Option('s', "severity", DefaultValue = DiagnosticInfo.DiagnosticInfoSeverity.Warning, HelpText = "Minimal severity to be reported.")]
19-
public DiagnosticInfo.DiagnosticInfoSeverity MinimalSeverity { get; set; }
18+
[Option('s', "severity", DefaultValue = DiagnosticInfoSeverity.Warning, HelpText = "Minimal severity to be reported.")]
19+
public DiagnosticInfoSeverity MinimalSeverity { get; set; }
20+
21+
[Option('v', "version", DefaultValue = UnityVersion.NONE, HelpText = "Check against spesific Unity version.")]
22+
public UnityVersion Version { get; set; }
2023
}
2124
}

UnityEngineAnalyzer.CLI/Program.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ public static void Main(string[] args)
2929
return;
3030
}
3131

32+
var unityVersionResolver = new UnityVersionResolver();
33+
options.Version = unityVersionResolver.ResolveVersion(options);
34+
3235
var startTime = DateTime.Now;
3336

3437
var fileName = options.ProjectFile;
@@ -52,11 +55,11 @@ public static void Main(string[] args)
5255
if (report.GetExporterCount() == 0)
5356
{
5457
//It's generally a good idea to make sure that the Console Exporter is last since it is interactive
55-
report.AddExporter(new JsonAnalyzerExporter(options.MinimalSeverity));
56-
report.AddExporter(new ConsoleAnalyzerExporter(options.MinimalSeverity));
58+
report.AddExporter(new JsonAnalyzerExporter(options));
59+
report.AddExporter(new ConsoleAnalyzerExporter(options));
5760
}
5861

59-
report.InitializeReport(fileInfo);
62+
report.InitializeReport(options);
6063

6164
var tasks = new List<Task>();
6265
if (fileInfo.Exists)
@@ -89,6 +92,7 @@ public static void Main(string[] args)
8992
}
9093
}
9194

95+
//TODO SET TO OWN CLASS
9296

9397
}
9498
}
Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,34 @@
11
using System;
2-
using System.IO;
32

43
namespace UnityEngineAnalyzer.CLI.Reporting
54
{
65
public abstract class AnalyzerExporter : IAnalyzerExporter
76
{
8-
//NOTE: Can we use using.static.DiagnosticsInfo; C#6 feature?
9-
protected DiagnosticInfo.DiagnosticInfoSeverity MinimalSeverity;
7+
private readonly Options options;
108

11-
public AnalyzerExporter(DiagnosticInfo.DiagnosticInfoSeverity MinimalSeverity)
9+
public AnalyzerExporter(Options options)
1210
{
13-
this.MinimalSeverity = MinimalSeverity;
11+
this.options = options;
12+
}
13+
14+
public bool IsAnalyzerRelevant(DiagnosticInfo diagnosticInfo)
15+
{
16+
if (options.MinimalSeverity > diagnosticInfo.Severity)
17+
{
18+
return false;
19+
}
20+
21+
if (options.Version < diagnosticInfo.VersionSpan.First || options.Version > diagnosticInfo.VersionSpan.Last)
22+
{
23+
return false;
24+
}
25+
26+
return true;
1427
}
1528

1629
public abstract void AppendDiagnostic(DiagnosticInfo diagnosticInfo);
1730
public abstract void FinalizeExporter(TimeSpan duration);
18-
public abstract void InitializeExporter(FileInfo projectFile);
31+
public abstract void InitializeExporter(Options options);
1932
public abstract void NotifyException(Exception exception);
2033
}
2134
}

UnityEngineAnalyzer.CLI/Reporting/ConsoleAnalyzerExporter.cs

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

43
namespace UnityEngineAnalyzer.CLI.Reporting
54
{
65
public class ConsoleAnalyzerExporter : StandardOutputAnalyzerReporter
76
{
8-
public ConsoleAnalyzerExporter(DiagnosticInfo.DiagnosticInfoSeverity MinimalSeverity) : base(MinimalSeverity)
7+
public ConsoleAnalyzerExporter(Options options) : base(options)
98
{
109
}
1110

@@ -19,12 +18,13 @@ public override void FinalizeExporter(TimeSpan duration)
1918
Console.ReadKey();
2019
}
2120

22-
public override void InitializeExporter(FileInfo projectFile)
21+
public override void InitializeExporter(Options options)
2322
{
2423
Console.ForegroundColor = ConsoleColor.Green;
2524
Console.WriteLine("Unity Syntax Analyzer");
2625
Console.WriteLine();
27-
Console.WriteLine("Analyzing: {0}", projectFile.FullName);
26+
Console.WriteLine("Analyzing: {0}", options.ProjectFile);
27+
Console.WriteLine("With Unity version: " + Enum.GetName((typeof(UnityVersion)), options.Version));
2828
Console.WriteLine();
2929
Console.ResetColor();
3030
}

UnityEngineAnalyzer.CLI/Reporting/DiagnosticInfo.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class DiagnosticInfo
1010
public int LineNumber { get; set; }
1111
public int CharacterPosition { get; set; }
1212
public DiagnosticInfoSeverity Severity { get; set; }
13+
public UnityVersionSpan VersionSpan { get; set; }
1314

1415
public enum DiagnosticInfoSeverity
1516
{

UnityEngineAnalyzer.CLI/Reporting/IAnalyzerExporter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public interface IAnalyzerExporter
77
{
88
void AppendDiagnostic(DiagnosticInfo diagnosticInfo);
99
void FinalizeExporter(TimeSpan duration);
10-
void InitializeExporter(FileInfo projectFile);
10+
void InitializeExporter(Options options);
1111
void NotifyException(Exception exception);
1212
}
1313
}

UnityEngineAnalyzer.CLI/Reporting/JsonAnalyzerExporter.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ public class JsonAnalyzerExporter : AnalyzerExporter
1515
private readonly List<Exception> _exceptions = new List<Exception>();
1616
private string _destinationReportFile;
1717

18-
public JsonAnalyzerExporter(DiagnosticInfo.DiagnosticInfoSeverity MinimalSeverity) : base(MinimalSeverity)
18+
public JsonAnalyzerExporter(Options options) : base(options)
1919
{
2020
}
2121

2222
public override void AppendDiagnostic(DiagnosticInfo diagnosticInfo)
2323
{
24-
if (diagnosticInfo.Severity >= MinimalSeverity)
24+
if (IsAnalyzerRelevant(diagnosticInfo))
2525
{
2626
_jsonSerializer.Serialize(_jsonWriter, diagnosticInfo);
2727
}
@@ -50,8 +50,9 @@ public override void FinalizeExporter(TimeSpan duration)
5050
//Process.Start(_destinationReportFile);
5151
}
5252

53-
public override void InitializeExporter(FileInfo projectFile)
53+
public override void InitializeExporter(Options options)
5454
{
55+
var projectFile = new FileInfo(options.ProjectFile);
5556
if (!projectFile.Exists)
5657
{
5758
throw new ArgumentException("Project file does not exist");

UnityEngineAnalyzer.CLI/Reporting/StandardOutputAnalyzerReporter.cs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using System;
2-
using System.IO;
2+
using static UnityEngineAnalyzer.CLI.Reporting.DiagnosticInfo;
33

44
namespace UnityEngineAnalyzer.CLI.Reporting
55
{
@@ -8,13 +8,13 @@ public class StandardOutputAnalyzerReporter : AnalyzerExporter
88
protected const string ConsoleSeparator = "\t";
99
protected const string FailurePrefix = "# ";
1010

11-
public StandardOutputAnalyzerReporter(DiagnosticInfo.DiagnosticInfoSeverity MinimalSeverity) : base(MinimalSeverity)
11+
public StandardOutputAnalyzerReporter(Options options) : base(options)
1212
{
1313
}
1414

1515
public override void AppendDiagnostic(DiagnosticInfo diagnosticInfo)
1616
{
17-
if (diagnosticInfo.Severity < MinimalSeverity)
17+
if (IsAnalyzerRelevant(diagnosticInfo) == false)
1818
{
1919
return;
2020
}
@@ -30,20 +30,19 @@ public override void AppendDiagnostic(DiagnosticInfo diagnosticInfo)
3030
Console.Write(diagnosticInfo.Message);
3131
Console.ResetColor();
3232
Console.WriteLine(@"{0}{1}{0}{2},{3}", ConsoleSeparator,diagnosticInfo.FileName, diagnosticInfo.LineNumber, diagnosticInfo.CharacterPosition);
33-
3433
}
3534

36-
private ConsoleColor ConsoleColorFromSeverity(DiagnosticInfo.DiagnosticInfoSeverity severity)
35+
private ConsoleColor ConsoleColorFromSeverity(DiagnosticInfoSeverity severity)
3736
{
3837
switch (severity)
3938
{
40-
case DiagnosticInfo.DiagnosticInfoSeverity.Hidden:
39+
case DiagnosticInfoSeverity.Hidden:
4140
return ConsoleColor.Gray;
42-
case DiagnosticInfo.DiagnosticInfoSeverity.Info:
41+
case DiagnosticInfoSeverity.Info:
4342
return ConsoleColor.Green;
44-
case DiagnosticInfo.DiagnosticInfoSeverity.Warning:
43+
case DiagnosticInfoSeverity.Warning:
4544
return ConsoleColor.Yellow;
46-
case DiagnosticInfo.DiagnosticInfoSeverity.Error:
45+
case DiagnosticInfoSeverity.Error:
4746
return ConsoleColor.Red;
4847
default:
4948
return ConsoleColor.White;
@@ -71,7 +70,7 @@ public override void FinalizeExporter(TimeSpan duration)
7170
{
7271
}
7372

74-
public override void InitializeExporter(FileInfo projectFile)
73+
public override void InitializeExporter(Options options)
7574
{
7675
}
7776
}

UnityEngineAnalyzer.CLI/UnityEngineAnalyzer.CLI.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@
118118
<Compile Include="Properties\AssemblyInfo.cs" />
119119
<Compile Include="Reporting\StandardOutputAnalyzerReporter.cs" />
120120
<Compile Include="SolutionAnalyzer.cs" />
121+
<Compile Include="UnityVersionResolver.cs" />
121122
</ItemGroup>
122123
<ItemGroup>
123124
<None Include="App.config" />

0 commit comments

Comments
 (0)