4 ms·
Interestingly, the spirit of the FindBugs project lives on in the development of languages like Rust and Swift, considering the purpose of the FindBugs project
by sdegutis 10y ago
Interestingly, the spirit of the FindBugs project lives on in the development of languages like Rust and Swift, considering the purpose of the FindBugs project is to fix inherent flaws in Java, e.g. not having a way to determine whether something will be null, or not telling you whether you checked whether something will be null at runtime, etc.
- surfmike 10y agoClang static analyzer is another great tool that didn't exist back then.
- scarmig 10y agoStatic analysis is not about fixing the "inherent flaws in Java." Findbugs does help mitigate issues from language design, but most things that it does would be silly to try to figure out a way to bake into the language itself. http://findbugs.sourceforge.net/bugDescriptions.html http://findbugs.sourceforge.net/bugDescriptions.html
- amaranth 10y agoI think if you could say that about any language it'd be Kotlin. It seems to take all of the best practices guidelines from Java and just bake them in to the language.
- Afty 10y agoYou're getting some flack for this, but I agree with you based on what we've seen with Error Prone. The people who design programming languages are human, and they make mistakes. Unfortunately, if your language becomes successful, it becomes nearly impossible to fix these mistakes while retaining backwards compatibility. Many of our checks are essentially working around problems with the language or API design. For example, our ForOverride checker (http://errorprone.info/bugpattern/ForOverride http://errorprone.info/bugpattern/ForOverride) addresses the fact that existing Java visibility modifiers are not expressive enough for some things the Guava team wanted to do. Our HashtableContains checker (http://errorprone.info/bugpattern/HashtableContains http://errorprone.info/bugpattern/HashtableContains) addresses an issue with a poorly-named method in the old Hashtable API, which really should be deprecated but is infeasible given the old code that uses it.