package org.checkerframework.checker.propkey; import java.util.Locale; import java.util.ResourceBundle; import org.checkerframework.common.basetype.BaseTypeChecker; import org.checkerframework.framework.qual.RelevantJavaTypes; import org.checkerframework.framework.source.SupportedOptions; /** * A type-checker that checks that only valid keys are used to access property files and resource * bundles. Subclasses can specialize this class for the different uses of property files, for * examples see the I18n Checker and Compiler Messages Checker. * * <p>Currently, the checker supports two methods to check: * * <ol> * <li value="1">Property files: A common method for localization using a property file, mapping * the keys to values. Programmers pass the property file locations via {@code propfiles} * option (e.g. {@code -Apropfiles=/path/to/messages.properties}), separating multiple files * by a colon ":". * <li value="2">{@link ResourceBundle}: Programmers pass the {@code baseName} name of the bundle * via {@code bundlename} (e.g. {@code -Abundlename=MyResource}. The checker uses the resource * associated with the default {@link Locale} in the compilation system. * </ol> * * @checker_framework.manual #propkey-checker Property File Checker */ // Subclasses need something similar to this: @SupportedOptions({"propfiles", "bundlenames"}) @RelevantJavaTypes(CharSequence.class) public class PropertyKeyChecker extends BaseTypeChecker {}