Exemple #1
0
        public static (int diagnostics, int telemetry) WriteDiagnosticAnalysisResults(
            ObjectWriter writer, DiagnosticAnalysisResultMap <string, DiagnosticAnalysisResultBuilder> result, CancellationToken cancellationToken)
        {
            var diagnosticCount      = 0;
            var diagnosticSerializer = new DiagnosticDataSerializer(VersionStamp.Default, VersionStamp.Default);

            writer.WriteInt32(result.AnalysisResult.Count);
            foreach (var(analyzerId, analyzerResults) in result.AnalysisResult)
            {
                writer.WriteString(analyzerId);

                diagnosticCount += WriteDiagnosticDataMap(writer, diagnosticSerializer, analyzerResults.SyntaxLocals, cancellationToken);
                diagnosticCount += WriteDiagnosticDataMap(writer, diagnosticSerializer, analyzerResults.SemanticLocals, cancellationToken);
                diagnosticCount += WriteDiagnosticDataMap(writer, diagnosticSerializer, analyzerResults.NonLocals, cancellationToken);

                diagnosticSerializer.WriteDiagnosticData(writer, analyzerResults.Others, cancellationToken);
                diagnosticCount += analyzerResults.Others.Length;
            }

            writer.WriteInt32(result.TelemetryInfo.Count);
            foreach (var(analyzerId, analyzerTelemetry) in result.TelemetryInfo)
            {
                writer.WriteString(analyzerId);
                WriteTelemetry(writer, analyzerTelemetry, cancellationToken);
            }

            // report how many data has been sent
            return(diagnosticCount, result.TelemetryInfo.Count);
        }
Exemple #2
0
        public static (int diagnostics, int telemetry) WriteDiagnosticAnalysisResults(
            ObjectWriter writer,
            AnalysisKind?analysisKind,
            DiagnosticAnalysisResultMap <string, DiagnosticAnalysisResultBuilder> result,
            CancellationToken cancellationToken)
        {
            var diagnosticCount      = 0;
            var diagnosticSerializer = new DiagnosticDataSerializer(VersionStamp.Default, VersionStamp.Default);

            writer.WriteInt32(result.AnalysisResult.Count);
            foreach (var(analyzerId, analyzerResults) in result.AnalysisResult)
            {
                writer.WriteString(analyzerId);

                switch (analysisKind)
                {
                case AnalysisKind.Syntax:
                    diagnosticCount += WriteDiagnosticDataMap(writer, diagnosticSerializer, analyzerResults.SyntaxLocals, cancellationToken);
                    break;

                case AnalysisKind.Semantic:
                    diagnosticCount += WriteDiagnosticDataMap(writer, diagnosticSerializer, analyzerResults.SemanticLocals, cancellationToken);
                    break;

                case null:
                    diagnosticCount += WriteDiagnosticDataMap(writer, diagnosticSerializer, analyzerResults.SyntaxLocals, cancellationToken);
                    diagnosticCount += WriteDiagnosticDataMap(writer, diagnosticSerializer, analyzerResults.SemanticLocals, cancellationToken);
                    diagnosticCount += WriteDiagnosticDataMap(writer, diagnosticSerializer, analyzerResults.NonLocals, cancellationToken);

                    diagnosticSerializer.WriteDiagnosticData(writer, analyzerResults.Others, cancellationToken);
                    diagnosticCount += analyzerResults.Others.Length;
                    break;

                default:
                    throw ExceptionUtilities.UnexpectedValue(analysisKind.Value);
                }
            }

            writer.WriteInt32(result.TelemetryInfo.Count);
            foreach (var(analyzerId, analyzerTelemetry) in result.TelemetryInfo)
            {
                writer.WriteString(analyzerId);
                WriteTelemetry(writer, analyzerTelemetry, cancellationToken);
            }

            // report how many data has been sent
            return(diagnosticCount, result.TelemetryInfo.Count);
        }
Exemple #3
0
        private static int WriteDiagnosticDataMap(
            ObjectWriter writer,
            DiagnosticDataSerializer serializer,
            ImmutableDictionary <DocumentId, ImmutableArray <DiagnosticData> > diagnostics,
            CancellationToken cancellationToken)
        {
            var count = 0;

            writer.WriteInt32(diagnostics.Count);
            foreach (var(documentId, data) in diagnostics)
            {
                documentId.WriteTo(writer);
                serializer.WriteDiagnosticData(writer, data, cancellationToken);

                count += data.Length;
            }

            return(count);
        }