All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.checkerframework.common.value.ValueChecker Maven / Gradle / Ivy

package org.checkerframework.common.value;

import java.util.LinkedHashSet;
import org.checkerframework.common.basetype.BaseTypeChecker;
import org.checkerframework.common.basetype.BaseTypeVisitor;
import org.checkerframework.framework.qual.StubFiles;
import org.checkerframework.framework.source.SupportedOptions;

/**
 * The Constant Value Checker is a constant propagation analysis: for each variable, it determines
 * whether that variable's value can be known at compile time.
 *
 * 

The Constant Value Checker has no dependencies, but it does trust {@link * org.checkerframework.checker.index.qual.Positive} annotations from the {@link * org.checkerframework.checker.index.IndexChecker}. This means that if the Value Checker is run on * code containing {@code Positive} annotations, then the Index Checker also needs to be run to * guarantee soundness. * * @author plvines * @checker_framework.manual #constant-value-checker Constant Value Checker */ @StubFiles("statically-executable.astub") @SupportedOptions({ValueChecker.REPORT_EVAL_WARNS, ValueChecker.IGNORE_RANGE_OVERFLOW}) public class ValueChecker extends BaseTypeChecker { public static final String REPORT_EVAL_WARNS = "reportEvalWarns"; public static final String IGNORE_RANGE_OVERFLOW = "ignoreRangeOverflow"; @Override protected BaseTypeVisitor createSourceVisitor() { return new ValueVisitor(this); } @Override protected LinkedHashSet> getImmediateSubcheckerClasses() { // Don't call super otherwise MethodVal will be added as a subChecker // which creates a circular dependency. return new LinkedHashSet>(); } @Override public boolean shouldResolveReflection() { // Because this checker is a subchecker of MethodVal, // reflection can't be resolved. return false; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy