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

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

Go to download

The Checker Framework enhances Java's type system to make it more powerful and useful. This lets software developers detect and prevent errors in their Java programs. The Checker Framework includes compiler plug-ins ("checkers") that find bugs or verify their absence. It also permits you to write your own compiler plug-ins.

There is a newer version: 3.49.2
Show newest version
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