Есть ли инструмент, который может анализировать зависимости между переменными в программах на C #? - PullRequest
5 голосов
/ 07 февраля 2010

Существует много инструментов, которые мы можем использовать, чтобы показать зависимости между модулями, файлами исходного кода, классами или функциями и т. Д. Но, похоже, нет инструмента для анализа зависимостей между переменными. Учитывая граф зависимостей переменных было бы полезно для понимания и рефакторинга кода.

Например, если переменная b используется только для вычисления значения переменной c следующим образом:

b = a;
....
c = b + 2;

Возможно, мы могли бы удалить переменную b, чтобы сделать код более читабельным:

....
c = a + 2;

Такая рефактория может быть сложной, если код очень сложный или имеет много неприятных запахов.

Существует ли какой-либо инструмент, который может анализировать зависимости между переменными в c # или других языках программирования?

Ответы [ 3 ]

1 голос
/ 07 февраля 2010

Проект Phoenix в Microsoft Research позволил использовать довольно интересные инструменты. В одной демонстрации, которую я видел, показано выделение зависимостей от данных. Таким образом, вы можете навести курсор на «c» в вашем примере, и все выражения, которые способствуют этому вычислению, будут выделены. Это была скорее демонстрация Phoenix, чем полноценный инструмент разработчика, но очень здорово было увидеть, что это можно сделать. Phoenix можно бесплатно загрузить , поэтому вы можете увидеть, какие образцы приложений включены.

1 голос
/ 07 февраля 2010

Resharper - хороший инструмент для анализа кода на C #. По крайней мере, он покажет вам неиспользованную переменную и переменную, которой вы присваиваете значение, но никогда не используете.

Если вы планируете серьезный рефакторинг вашего кода, вы можете написать модульный тест, чтобы быть более уверенным, что вы не сломаете что-либо.

0 голосов
/ 26 февраля 2010

См. Обсуждение того, как DMS Software Reengineering Toolkit выполняет (контроль и) анализ потока данных. По сути, это классический анализ компилятора информационных потоков, который включает в себя так называемые цепочки def-use. Цепочки использования показывают, как значение (конкретное назначение) потребляется другими частями программы.

Эти информационные потоки вычисляются как структуры данных, поэтому их легко увидеть. (На веб-странице показаны изображения, но они представляют собой результаты с графиками, переданные в точка . Чтобы сделать это инструментом, требуется больше усилий.

Мы создали программные слайсеры, которые отображают эту информацию в пользовательском интерфейсе. Они еще не доступны в продаже.

Grammatech делает такие программные слайсеры для Си и Ады, я думаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...