package org.checkerframework.checker.lock; import org.checkerframework.common.basetype.BaseTypeChecker; // TODO: The Lock Checker implementation has not been optimized for performance yet. // Run a profiler on the Lock Checker tests, as well as when type checking a large project such as Daikon or Guava. // TODO: Here is a list of nice-to-have features/tests but not critical to release the Lock Checker: // Add a warning if a user annotates a static field with @GuardedBy("this") instead of @GuardedBy("<class name>.class") // Add a test that @GuardedBy("<class name>.class") is never ambiguous given two classes with the same name in two different packages. // In LockStore.updateForMethodCall, calling a method annotated with @MayReleaseLocks should not // always cause local variables' refinement to be reset to @GuardedByUnknown. // The current workaround is to explicitly annotate the local variable with the appropriate annotation in the @GuardedBy hierarchy. // Would it be a useful feature for the Lock Checker to warn about missing unlock calls when there is a call to .lock() in a method? // Or is this a common pattern to lock in one method and unlock in a different one? /** @checker_framework.manual #lock-checker Lock Checker */ public class LockChecker extends BaseTypeChecker {}