Skip to content

Commit

Permalink
Merge pull request #35 from PavelBansky/master
Browse files Browse the repository at this point in the history
Added support for custom json format
  • Loading branch information
PavelBansky committed Dec 1, 2017
2 parents 2295dd4 + ae77c03 commit d6ab2c0
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public static void Configure(CommandLineApplication command)

command.ExtendedHelpText = "\nOutput format options:\n%F\tfile path\n%L\tstart line number\n" +
"%C\tstart column\n%l\tend line number\n%c\tend column\n%I\tlocation inside file\n" +
"%i\tmatch length\n%m\tmatch\n%R\trule id\n%N\trule name\n%S\tseverity\n%T\ttags(comma-separated)";
"%i\tmatch length\n%m\tmatch\n%R\trule id\n%N\trule name\n%S\tseverity\n%D\tissue description\n%T\ttags(comma-separated)";

command.OnExecute(() => {
return (new AnalyzeCommand(locationArgument.Value,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<ApplicationIcon />
<PackageId>Microsoft.DevSkim.CLI</PackageId>
<Product>Microsoft DevSkim Command Line Interface</Product>
<Version>0.1.6</Version>
<Version>0.1.7</Version>
<Authors>Microsoft</Authors>
<Company>Microsoft</Company>
<Copyright>(c) Microsoft Corporation. All rights reserved</Copyright>
Expand Down
54 changes: 40 additions & 14 deletions src/Microsoft.DevSkim/Microsoft.DevSkim.CLI/Writers/JsonWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,47 @@ namespace Microsoft.DevSkim.CLI.Writers
{
public class JsonWriter : Writer
{
public JsonWriter(string formatString)
{
if (string.IsNullOrEmpty(formatString))
_formatString = "%F%L%C%l%c%m%S%R%N%D";
else
_formatString = formatString;
}

public override void WriteIssue(IssueRecord issue)
{
// Store the result in the result list
jsonResult.Add(new Dictionary<string, string>()
{
{ "filename", issue.Filename},
Dictionary<string, object> item = new Dictionary<string, object>();

if (_formatString.Contains("%F"))
item.Add("filename", issue.Filename);
if (_formatString.Contains("%L"))
item.Add("start_line", issue.Issue.StartLocation.Line);
if (_formatString.Contains("%C"))
item.Add("start_column", issue.Issue.StartLocation.Column);
if (_formatString.Contains("%l"))
item.Add("end_line", issue.Issue.EndLocation.Line);
if (_formatString.Contains("%c"))
item.Add("end_column", issue.Issue.EndLocation.Column);
if (_formatString.Contains("%I"))
item.Add("match_index", issue.Issue.Boundary.Index);
if (_formatString.Contains("%i"))
item.Add("match_length", issue.Issue.Boundary.Length);
if (_formatString.Contains("%R"))
item.Add("rule_id", issue.Issue.Rule.Id);
if (_formatString.Contains("%N"))
item.Add("rule_name", issue.Issue.Rule.Name);
if (_formatString.Contains("%S"))
item.Add("severity", issue.Issue.Rule.Severity);
if (_formatString.Contains("%D"))
item.Add("description", issue.Issue.Rule.Description);
if (_formatString.Contains("%m"))
item.Add("match", issue.TextSample);
if (_formatString.Contains("%T"))
item.Add("tags", issue.Issue.Rule.Tags);

{ "start_line", issue.Issue.StartLocation.Line.ToString() },
{ "start_column", issue.Issue.StartLocation.Column.ToString() },
{ "end_line", issue.Issue.EndLocation.Line.ToString() },
{ "end_column", issue.Issue.EndLocation.Column.ToString() },
{ "matching_section", issue.TextSample },
{ "rule_id", issue.Issue.Rule.Id },
{ "rule_name", issue.Issue.Rule.Name },
{ "rule_description", issue.Issue.Rule.Description }
});
// Store the result in the result list
jsonResult.Add(item);
}

public override void FlushAndClose()
Expand All @@ -35,6 +60,7 @@ public override void FlushAndClose()
}

// Store the results here (JSON only)
List<Dictionary<string, string>> jsonResult = new List<Dictionary<string, string>>();
List<Dictionary<string, object>> jsonResult = new List<Dictionary<string, object>>();
string _formatString;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public override void WriteIssue(IssueRecord issue)
output = output.Replace("%R", issue.Issue.Rule.Id);
output = output.Replace("%N", issue.Issue.Rule.Name);
output = output.Replace("%S", issue.Issue.Rule.Severity.ToString());
output = output.Replace("%D", issue.Issue.Rule.Description);
output = output.Replace("%m", issue.TextSample);
output = output.Replace("%T", string.Join(',',issue.Issue.Rule.Tags));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public static Writer GetWriter(string writerName, string format = null)
switch (writerName.ToLowerInvariant())
{
case "json":
return new JsonWriter();
return new JsonWriter(format);
case "text":
return new SimpleTextWriter(format);
case "sarif":
Expand Down

0 comments on commit d6ab2c0

Please sign in to comment.