It has been shown that code optimization problems are NP-complete or even undecidable
https://en.wikipedia.org/wiki/Optimizing_compiler
So, what I would suggest it's to check if in the code you're analyzing there's some some obfuscation specific transformations / patterns. Here there's an example.
Checking for gotos
Most code obfuscators would replace instructions produced by a Java compiler with gotos and other instructions that may not be decompiled into valid Java source. A decompiler expecting conventional javac output would either fail or produce pseudocode with lots of labels and goto statements.
There are some techniques to detect obfuscation patterns. But I would recommend to first reverse engineer some obfuscation techniques. There are some papers about this:
Conference Paper Deobfuscation: reverse engineering obfuscated code
Article Deobfuscate Non-Returning Calls and Call-Stack Tampering in ...