У меня есть строка, содержащая исходный код класса. Теперь у меня есть еще одна строка, содержащая полное имя метода в этом классе. Имя способа является, например,Восстановить исходный код метода из файла исходного кода класса
public void (java.lang.String test)
Теперь я хочу вернуть исходный код этого метода из строки с исходным кодом класса. Как я могу это сделать? С String#indexOf(methodName)
я могу найти начало исходного кода метода, но как найти конец?
==== ==== РЕДАКТИРОВАТЬ
Я использовал подсчет фигурные скобки приближаются:
internal void retrieveSourceCode()
{
int startPosition = parentClass.getSourceCode().IndexOf(this.getName());
if (startPosition != -1)
{
String subCode = parentClass.getSourceCode().Substring(startPosition, parentClass.getSourceCode().Length - startPosition);
for (int i = 0; i < subCode.Length; i++)
{
String c = subCode.Substring(0, i);
int open = c.Split('{').Count() - 1;
int close = c.Split('}').Count() - 1;
if (open == close && open != 0)
{
sourceCode = c;
break;
}
}
}
Console.WriteLine("SourceCode for " + this.getName() + "\n" + sourceCode);
}
Это работает более или менее хорошо, однако, если метод определен без тела, он не работает. Любые подсказки, как это решить?
Предполагается, что это полностью зависит от языка кода, который вы разбираете.Это похоже на Java, и в этом случае вы будете считать фигурные фигурные скобки. – lesscode 2010-12-08 12:27:04
Это java. Итак, вы предлагаете считать открытые кудри, и если это 0, метод закончен? – 2010-12-08 12:28:25
это использование ikvm? – IanNorton 2010-12-08 12:29:31