Vielen Dank an alle für ihr Feedback. Ein Blick in die Compiler-API, es ist definitiv machbar (aber nicht so einfach). Dieser Artikel war ein guter Anfang für die Compiler-API. Ich denke, in Zukunft werde ich mich mit dem Schreiben eines erweiterbaren Regelprüfers beschäftigen. Der Versuch, die @Deprecated
Annotation wird übrigens nicht funktionieren, da sie im Compiler zusammen mit den anderen "Platform Annotations" entfernt wird.
Im Moment wähle ich die eher grobe Lösung, den Programmierer mit einer ausführlichen geprüften Ausnahme zu erschlagen. Das macht den Code zwar unübersichtlich, vermeidet aber auch die Komplexität einer tatsächlichen Analyse der Absicht. Etwas wie:
try {
doWork(workUnit, 15, Style.STRICT);
} catch (MakeSureYouOverrodeEverythingYouWantedToFirst warning) {
; // will never actually reach here, but you have been warned!
}
Wenn der Programmierer sich nicht an die Anweisungen hält, kann die Ausgabe seines Programms pseudozufällig fehlerhaft und daher ziemlich mühsam zu debuggen sein. Und obwohl diese Lösung sicherlich ein verpönter Hack der Ausnahmebehandlung ist (auch von mir), erfüllt sie ganz einfach meine Bedürfnisse.
Außerdem könnte der zusätzliche Aufwand den Programmierer dazu ermutigen, tatsächlich das zu tun, was er tun soll!
Ich bin immer noch daran interessiert, andere Ideen zu hören, wenn Sie eine haben.