Инструменты струны - PullRequest
3 голосов
/ 14 мая 2010

Где-то в эпоху C ++ я создал библиотеку, которая позволила представить строковое представление истории вычислений. Имея математическое выражение вроде:

TScalar Compute(TScalar a, TScalar b, TScalar c)
{
 return ( a + b ) * c;
}

Я мог бы отрендерить его строковое представление:

r = Compute(VerbalScalar("a", 1), VerbalScalar("b", 2), VerbalScalar("c", 3));
Assert.AreEqual(9, r.Value);
Assert.AreEqual("(a+b)*c==(1+2)*3", r.History );

Перегрузка оператора C ++ допускала замену простого типа сложным объектом самоконтроля внутренним представлением дерева всего, что происходит с объектами.

Теперь я хотел бы иметь такую ​​же возможность для строк NET, только вместо имен переменных я хотел бы видеть следы стека всех мест в коде, которые влияли на строку.

И я хочу, чтобы он работал с существующим кодом и скомпилированными сборками.

Также я хочу, чтобы все это подключилось к отладчику Visual Studio, чтобы я мог установить точку останова и увидеть все, что произошло со строкой.

Какая технология позволила бы подобные вещи?

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

1 Ответ

1 голос
/ 08 сентября 2010

Ну, есть несколько технологий, которые могут принести пользу здесь.

Одним из них является создание вашей собственной системы регистрации, чтобы отслеживать информацию, которую вы ищете.Этот список информации может быть передан через каждую вычислительную функцию, или переменная «область действия класса» может содержать информацию.Это больше сделать сам подход.Это не низкий уровень.

Если вы хотите действительно глубоко копаться в строковом классе, есть способ отразить строковые функции.Эта система отражателей утверждает, что она может быть связана с системой отладки (хотя я не пробовал это).Вы можете попробовать использовать TestDriven.NET и .NET Reflector .Кроме того, если вы используете Visual Studio 2008+ Professional или выше, вы сможете отлаживать непосредственно в самой .NET Framework.Это позволит вам увидеть, что происходит со строками.

Если я неправильно понял вопрос или информацию, которую вы ищете, пожалуйста, дайте мне знать.Я постараюсь помочь всем, чем смогу.

...