Looks like this doesn’t just affect constructors, but methods as well. This code shows the same issue:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UsesDeprecations {
public static void test() {
HasDeprecations.method(new ArrayList<>());
HasDeprecations.method(new HashMap<>());
}
static class HasDeprecations {
@Deprecated
public static void method(final Map<String, String> m) {}
public static void method(final List<String> l) {}
}
}
If the first method is @Deprecated, both calls are marked by CallToDeprecatedMethod (one false positive). If the second method is @Deprecated, neither is marked by CallToDeprecatedMethod (one false negative).