Technical articles about original projects, JVM, Static Analysis and JavaScript.

But I found that parsing code is not enough to detect bugs. For example, we cannot know the difference between:

// this is OK, both of placeholder and parameter is only one
logger.info("UserId is: {}", new UserId());
// this is a bug, because there is no parameter for placeholder
logger.info("UserId is: {}", new OriginalException());

I think we should parse .class file instead of source. So using FindBugs is better than using PMD.