public interface IValidationRule
{
    /// <summary>
    /// Gets the rule name.
    /// </summary>
    string RuleName { get; }

    /// <summary>
    /// Gets the default severity of this rule.
    /// </summary>
    ValidationSeverity Severity { get; }

    /// <summary>
    /// Validates the supplied PE image.
    /// </summary>
    /// <param name="peInfo">The parsed PE image.</param>
    /// <param name="cancellationToken">A token used to cancel the operation.</param>
    /// <returns>A validation result.</returns>
    Task<ValidationResult> ValidateAsync(PeImageInfo peInfo, CancellationToken cancellationToken);
}