58 lines
1.6 KiB
Dart
58 lines
1.6 KiB
Dart
import 'package:swagger_generator_flutter/pipeline/validate/core/validation_context.dart';
|
|
import 'package:swagger_generator_flutter/pipeline/validate/core/validation_result.dart';
|
|
import 'package:swagger_generator_flutter/pipeline/validate/core/validation_rule.dart';
|
|
|
|
/// API 基本信息验证规则
|
|
class InfoValidationRule extends ValidationRule {
|
|
@override
|
|
String get id => 'info_validation';
|
|
|
|
@override
|
|
String get name => 'API 基本信息验证';
|
|
|
|
@override
|
|
ValidationResult validate(ValidationContext context) {
|
|
final document = context.document;
|
|
final errors = <ValidationError>[];
|
|
final warnings = <ValidationWarning>[];
|
|
|
|
if (document.title.isEmpty) {
|
|
errors.add(
|
|
const ValidationError(
|
|
path: 'info.title',
|
|
message: 'API 标题不能为空',
|
|
type: ValidationErrorType.required,
|
|
suggestion: '请提供有意义的 API 标题',
|
|
),
|
|
);
|
|
}
|
|
|
|
if (document.version.isEmpty) {
|
|
errors.add(
|
|
const ValidationError(
|
|
path: 'info.version',
|
|
message: 'API 版本不能为空',
|
|
type: ValidationErrorType.required,
|
|
suggestion: '请使用语义化版本号,如 "1.0.0"',
|
|
),
|
|
);
|
|
}
|
|
|
|
if (document.description.isEmpty) {
|
|
warnings.add(
|
|
const ValidationWarning(
|
|
path: 'info.description',
|
|
message: 'API 描述为空',
|
|
suggestion: '建议添加 API 的详细描述',
|
|
),
|
|
);
|
|
}
|
|
|
|
return ValidationResult(
|
|
isValid: errors.isEmpty,
|
|
errors: errors,
|
|
warnings: warnings,
|
|
);
|
|
}
|
|
}
|