Hello! For a project of mine I have to use a commercial library. This library comes in binary form and is partly obfuscated. The parts of the signatures of classes that are meant to be used by the developer are unobfuscated. The other parts - be them in the private, protected or public interface - are obfuscated.
When I browse into such a partly obfuscated class I get a decompiled
version shown in the editor. This version contains such funny things
as methods with the name "if" or "for", which is ok for obfuscated
classes. IDEA marks those methods as syntax errors.
It would be nice if IDEA would not mark them as errors. IDEA should
notice that it decompiled the code and that it has to be ok when it
comes in binary form.
When I press Ctrl-F12 I get a list of all the methods in the class -
including the ifs and fors and so on. When I select one of them and
press enter, IDEA springs to some place in the class but not to the
selected method.
But now comes the part which made me take a better look into this
issue:
I have a variable serverSession, which references an object that is an
instance of such a partly obfuscated class and type
serverSession.
I get a popup with all the available methods. Now I select a method and
get this
serverSession.getCustId()
^^^
(^ marks a red underline)
and the statusbar says "Cannot resolve method getCustId()"
Hey, I just selected this method from a popup. What's that?
The other two problems are also present in IDEA 2.5.1, but the last
only occurs in Ariadna and is the most annoying of them.
I investigated this issue one step further and found out:
1. If the partly obfuscated class implements an unobfuscated
interface, IDEA has no problems with the usage of those methods on
instances of the partly obfuscated class.
2. Parameter info works fine for those methods that are marked as
not resolvable
3. Quick JavaDoc does not work for them
Greets
Robert
smime.p7s
Description: S/MIME Cryptographic Signature
