예제 #1
0
        /// <summary>
        /// Initializes a <see cref="HazardousUsageEvaluator"/> that evaluates a return statement with a return value of the tracked type.
        /// </summary>
        /// <param name="evaluator">Evaluation callback.</param>
        public HazardousUsageEvaluator(HazardousUsageEvaluatorKind kind, EvaluationCallback evaluator)
        {
            if (kind != HazardousUsageEvaluatorKind.Return && kind != HazardousUsageEvaluatorKind.Initialization)
            {
                throw new ArgumentException(
                          "kind must be Return or Initialization.  Use other constructors for Invocation.",
                          nameof(kind));
            }

            Kind           = kind;
            ValueEvaluator = evaluator ?? throw new ArgumentNullException(nameof(evaluator));
        }
        /// <summary>
        /// Initializes a <see cref="HazardousUsageEvaluator"/> that evaluates a return statement with a return value of the tracked type.
        /// </summary>
        /// <param name="evaluator">Evaluation callback.</param>
        /// <param name="derivedClass">Whether to consider derived class.</param>
        public HazardousUsageEvaluator(HazardousUsageEvaluatorKind kind, EvaluationCallback evaluator, bool derivedClass = false)
        {
            if (kind is not HazardousUsageEvaluatorKind.Return and not HazardousUsageEvaluatorKind.Initialization and not HazardousUsageEvaluatorKind.Argument)
            {
                throw new ArgumentException(
                          "kind must be Return or Initialization or Argument.  Use other constructors for Invocation.",
                          nameof(kind));
            }

            Kind           = kind;
            DerivedClass   = derivedClass;
            ValueEvaluator = evaluator ?? throw new ArgumentNullException(nameof(evaluator));
        }