convertAnalysisError method
AnalysisError
convertAnalysisError(
- Diagnostic diagnostic, {
- LineInfo? lineInfo,
- DiagnosticSeverity? severity,
Converts the analysis diagnostic
from the 'analyzer' package to an
analysis error defined by the plugin API.
If a lineInfo
is provided then the error's location will have a start
line and start column. If a severity
is provided, then it will override
the severity defined by the error.
Implementation
plugin.AnalysisError convertAnalysisError(
analyzer.Diagnostic diagnostic, {
analyzer.LineInfo? lineInfo,
analyzer.DiagnosticSeverity? severity,
}) {
var diagnosticCode = diagnostic.diagnosticCode;
severity ??= diagnosticCode.severity;
var offset = diagnostic.offset;
var startLine = -1;
var startColumn = -1;
var endLine = -1;
var endColumn = -1;
if (lineInfo != null) {
var startLocation = lineInfo.getLocation(offset);
startLine = startLocation.lineNumber;
startColumn = startLocation.columnNumber;
var endLocation = lineInfo.getLocation(offset + diagnostic.length);
endLine = endLocation.lineNumber;
endColumn = endLocation.columnNumber;
}
List<plugin.DiagnosticMessage>? contextMessages;
if (diagnostic.contextMessages.isNotEmpty) {
contextMessages = diagnostic.contextMessages
.map(
(message) => convertDiagnosticMessage(message, lineInfo: lineInfo),
)
.toList();
}
return plugin.AnalysisError(
convertErrorSeverity(severity),
convertErrorType(diagnosticCode.type),
plugin.Location(
diagnostic.source.fullName,
offset,
diagnostic.length,
startLine,
startColumn,
endLine: endLine,
endColumn: endColumn,
),
diagnostic.message,
diagnosticCode.name.toLowerCase(),
contextMessages: contextMessages,
correction: diagnostic.correctionMessage,
hasFix: true,
);
}