1

Я хочу знать, как используется конкретная переменная в классе Java. Существуют ли какие-либо инструменты для анализа статического кода, которые помогают мне отслеживать переменную.Анализ статического кода Java

Например:

Class A { 
    int trackMe; 
    function usedHere(trackMe); 
    B bobject = new B(trackMe); 
    ... 

    } 

Class B { 
     B (int var) { 
     copyOfTrackMe = var; 
     } 
    } 

В приведенном выше примере, если я хочу, чтобы отслеживать переменную "TrackMe". Я должен быть уведомлен инструментом, что trackMe передается функции usedHere, а также конструктору B, где делается копия.

Любые входы оцениваются.

** * ** * * EDIT * ** * ** *
Я не хочу, чтобы запустить код или изменить код в чтобы достичь этого. Поэтому я думаю, что ни один из отладчиков IDE не выполнит эту работу.

ответ

0

Большинство IDE могут сделать это с помощью поиска. Например, в eclipse, выделив поле trackMe, а затем нажав кнопку управления + H, вы откроете диалоговое окно поиска Java. Нажав на «поиск», вы увидите все места в рабочей области, на которые прямо ссылаются это поле.

+0

На самом деле, что это будет делать, это поиск этой строки. Щелчок в любом месте переменной и preseing control-shift-G покажет все места, где указана эта переменная, и оставьте все места, где они просто появляются в комментарии, или строка появляется внутри какой-либо другой переменной. – arcy

+0

@rcook На самом деле это та же самая вещь, что и панель управления + H "Java search". и это то, о чем я говорил. – dkatzel

+0

Рассмотрите возможность добавления скриншота. –

0

Возможно, я не понимаю вас правильно, но это звучит странно. возможно, если вы скажете, почему вы хотите это сделать, это может быть яснее. Однако, если вы не пробовали использовать стандартный отладчик, найденный в любой достойной среде IDE, вы должны попробовать это и посмотреть, действительно ли это то, что вы хотите. Вы можете просмотреть переменную и посмотреть, как меняется контент.

Однако, если это то, что вы хотите сделать в коде, вы можете попробовать обертывание переменную в объекте и писать специальный метод получения, который будет выводить некоторую информацию всякий раз, когда он вызывается, например, как:

class MyVarWrapper { 
    private int myVar; 
    public void MyVarWrapper(int n) { 
    myVar = n; 
    } 

    public int getMyVar(String info) { 
    System.out.println(info); 
    return myVar; 
    } 
} 

Может показаться немного запутанным, но информация ограничена в конце концов :)

+0

Я не хочу запускать код или изменять код. Я считаю, что мне нужно запустить код, чтобы попробовать, что вы говорите. –