/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/VisualBasic/Test/CommandLine/SarifV2ErrorLoggerTests.vb
328 строк
10 KB
Manish Vasani
Enhance the SARIF v2 log to report analyzer execution time
14 июн 2023, 10:47
14 июн 2023, 10:47
096e052
Код
Авторство
О чём код?
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports System.Globalization Imports System.IO Imports Microsoft.CodeAnalysis.Test.Utilities Imports Microsoft.CodeAnalysis.VisualBasic.UnitTests Imports Roslyn.Utilities Imports Xunit Imports Microsoft.CodeAnalysis.CommonDiagnosticAnalyzers Namespace Microsoft.CodeAnalysis.VisualBasic.CommandLine.UnitTests <Trait(Traits.Feature, Traits.Features.SarifErrorLogging)> Public Class SarifV2ErrorLoggerTests Inherits SarifErrorLoggerTests Protected Overrides ReadOnly Property ErrorLogQualifier As String Get Return ";version=2" End Get End Property Friend Overrides Function GetExpectedOutputForNoDiagnostics( cmd As MockVisualBasicCompiler) As String Dim expectedOutput = "{{ ""$schema"": ""http://json.schemastore.org/sarif-2.1.0"", ""version"": ""2.1.0"", ""runs"": [ {{ ""results"": [ ], ""tool"": {{ ""driver"": {{ ""name"": ""{0}"", ""version"": ""{1}"", ""dottedQuadFileVersion"": ""{2}"", ""semanticVersion"": ""{3}"", ""language"": ""{4}"" }} }}, ""columnKind"": ""utf16CodeUnits"" }} ] }}" Return FormatOutputText(expectedOutput, cmd, hasAnalyzers:=False) End Function <Fact> Public Sub NoDiagnostics() NoDiagnosticsImpl() End Sub Friend Overrides Function GetExpectedOutputForSimpleCompilerDiagnostics( cmd As MockVisualBasicCompiler, sourceFilePath As String) As String Dim expectedOutput = "{{ ""$schema"": ""http://json.schemastore.org/sarif-2.1.0"", ""version"": ""2.1.0"", ""runs"": [ {{ ""results"": [ {{ ""ruleId"": ""BC42024"", ""ruleIndex"": 0, ""level"": ""warning"", ""message"": {{ ""text"": ""Unused local variable: 'x'."" }}, ""locations"": [ {{ ""physicalLocation"": {{ ""artifactLocation"": {{ ""uri"": ""{5}"" }}, ""region"": {{ ""startLine"": 4, ""startColumn"": 13, ""endLine"": 4, ""endColumn"": 14 }} }} }} ], ""properties"": {{ ""warningLevel"": 1 }} }}, {{ ""ruleId"": ""BC30420"", ""ruleIndex"": 1, ""level"": ""error"", ""message"": {{ ""text"": ""'Sub Main' was not found in '{6}'."" }} }} ], ""tool"": {{ ""driver"": {{ ""name"": ""{0}"", ""version"": ""{1}"", ""dottedQuadFileVersion"": ""{2}"", ""semanticVersion"": ""{3}"", ""language"": ""{4}"", ""rules"": [ {{ ""id"": ""BC42024"", ""shortDescription"": {{ ""text"": ""Unused local variable"" }}, ""helpUri"": ""https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(BC42024)"", ""properties"": {{ ""category"": ""Compiler"", ""tags"": [ ""Compiler"", ""Telemetry"" ] }} }}, {{ ""id"": ""BC30420"", ""defaultConfiguration"": {{ ""level"": ""error"" }}, ""helpUri"": ""https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(BC30420)"", ""properties"": {{ ""category"": ""Compiler"", ""tags"": [ ""Compiler"", ""Telemetry"", ""NotConfigurable"" ] }} }} ] }} }}, ""columnKind"": ""utf16CodeUnits"" }} ] }}" Return FormatOutputText( expectedOutput, cmd, hasAnalyzers:=False, AnalyzerForErrorLogTest.GetUriForPath(sourceFilePath), Path.GetFileNameWithoutExtension(sourceFilePath)) End Function <Fact> Public Sub SimpleCompilerDiagnostics() SimpleCompilerDiagnosticsImpl() End Sub Friend Overrides Function GetExpectedOutputForSimpleCompilerDiagnosticsSuppressed( cmd As MockVisualBasicCompiler, sourceFilePath As String, ParamArray suppressionKinds As String()) As String Dim expectedOutput = "{{ ""$schema"": ""http://json.schemastore.org/sarif-2.1.0"", ""version"": ""2.1.0"", ""runs"": [ {{ ""results"": [ {{ ""ruleId"": ""BC42024"", ""ruleIndex"": 0, ""level"": ""warning"", ""message"": {{ ""text"": ""Unused local variable: 'x'."" }}, ""suppressions"": [ {{ ""kind"": ""inSource"", ""properties"": {{ ""suppressionType"": ""Pragma Directive"" }} }} ], ""locations"": [ {{ ""physicalLocation"": {{ ""artifactLocation"": {{ ""uri"": ""{5}"" }}, ""region"": {{ ""startLine"": 5, ""startColumn"": 13, ""endLine"": 5, ""endColumn"": 14 }} }} }} ], ""properties"": {{ ""warningLevel"": 1 }} }}, {{ ""ruleId"": ""BC30420"", ""ruleIndex"": 1, ""level"": ""error"", ""message"": {{ ""text"": ""'Sub Main' was not found in '{6}'."" }} }} ], ""tool"": {{ ""driver"": {{ ""name"": ""{0}"", ""version"": ""{1}"", ""dottedQuadFileVersion"": ""{2}"", ""semanticVersion"": ""{3}"", ""language"": ""{4}"", ""rules"": [ {{ ""id"": ""BC42024"", ""shortDescription"": {{ ""text"": ""Unused local variable"" }}, ""helpUri"": ""https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(BC42024)"", ""properties"": {{ ""category"": ""Compiler""" + AnalyzerForErrorLogTest.GetExpectedV2SuppressionTextForRulesSection(suppressionKinds) + ", ""tags"": [ ""Compiler"", ""Telemetry"" ] }} }}, {{ ""id"": ""BC30420"", ""defaultConfiguration"": {{ ""level"": ""error"" }}, ""helpUri"": ""https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(BC30420)"", ""properties"": {{ ""category"": ""Compiler"", ""tags"": [ ""Compiler"", ""Telemetry"", ""NotConfigurable"" ] }} }} ] }} }}, ""columnKind"": ""utf16CodeUnits"" }} ] }}" Return FormatOutputText( expectedOutput, cmd, hasAnalyzers:=False, AnalyzerForErrorLogTest.GetUriForPath(sourceFilePath), Path.GetFileNameWithoutExtension(sourceFilePath)) End Function <Fact> Public Sub SimpleCompilerDiagnosticsSuppressed() SimpleCompilerDiagnosticsSuppressedImpl() End Sub Friend Overrides Function GetExpectedOutputForAnalyzerDiagnosticsWithAndWithoutLocation( cmd As MockVisualBasicCompiler) As String Dim expectedOutput = "{{ ""$schema"": ""http://json.schemastore.org/sarif-2.1.0"", ""version"": ""2.1.0"", ""runs"": [ {{ {5}, ""properties"": {{ ""analyzerExecutionTime"": ""{7}"" }}, ""tool"": {{ ""driver"": {{ ""name"": ""{0}"", ""version"": ""{1}"", ""dottedQuadFileVersion"": ""{2}"", ""semanticVersion"": ""{3}"", ""language"": ""{4}"", {6} }} }}, ""columnKind"": ""utf16CodeUnits"" }} ] }}" Return FormatOutputText( expectedOutput, cmd, hasAnalyzers:=True, AnalyzerForErrorLogTest.GetExpectedV2ErrorLogResultsText(cmd.Compilation), AnalyzerForErrorLogTest.GetExpectedV2ErrorLogRulesText(cmd.DescriptorsWithInfo, CultureInfo.InvariantCulture)) End Function <Fact> Public Sub AnalyzerDiagnosticsWithAndWithoutLocation() AnalyzerDiagnosticsWithAndWithoutLocationImpl() End Sub Private Function FormatOutputText(s As String, compiler As MockVisualBasicCompiler, hasAnalyzers As Boolean, ParamArray additionalArguments() As Object) As String If hasAnalyzers Then additionalArguments = additionalArguments.Append(compiler.GetAnalyzerExecutionTimeFormattedString()) End If Dim arguments = New List(Of Object) From { compiler.GetToolName(), compiler.GetCompilerVersion(), compiler.GetAssemblyVersion(), compiler.GetAssemblyVersion().ToString(fieldCount:=3), compiler.GetCultureName() }.Concat(additionalArguments).ToArray() Return String.Format(CultureInfo.InvariantCulture, s, arguments) End Function End Class End Namespace