Анализ кода C # - VS 2005 - PullRequest
3 голосов
/ 20 марта 2009

У меня есть проект управления пользователями на C #, который вызывает периодическую ошибку во время выполнения .NET, общую ошибку и спрашивает, есть ли какой-нибудь инструмент анализа кода, на который я могу указать в своем файле .sln, который бы сообщал мне о причинах ошибка

Ответы [ 5 ]

3 голосов
/ 20 марта 2009

Есть ли инструмент, который скажет вам, что вы делаете неправильно?

Нет. Это часть удовольствия от программирования. Компьютерная программа не может посмотреть на кусок кода и окончательно определить, что это за ошибки.

Существуют ли инструменты, которые могут сказать мне кое-что, что моя программа делает неправильно?

Да, они называются инструментами статического анализа. FxCop - это бесплатный инструмент, доступный от Microsoft, который проведет потрясающий статический анализ в вашей кодовой базе.

Я не уверен на 100%, можно ли указать автономную версию на файл .sln. Но на него легко можно указать вывод сборки из решения.

http://msdn.microsoft.com/en-us/library/bb429476.aspx

1 голос
/ 20 марта 2009

Вам нужен инструмент статического анализа кода - кроме FXCop, о котором упоминал JaredPar, есть другие .

Другой вариант, который я недавно нашел, который дает полезный способ поиска таких проблем, это PEX , который выполняет модульное тестирование белого ящика. Поэтому, когда вы запускаете исследования PEX, он пытается отправить много значений вашим методам с помощью автоматически сгенерированных модульных тестов, которые могут помочь найти странные проблемы, вызванные странными / неожиданными данными.

0 голосов
/ 19 мая 2010

NDepend полностью интегрировано в VS2005, VS2008 и VS2010. Таким образом, вы можете просто указать NDepend на sln, которую вы хотите проанализировать, и NDepend создаст для вас полный отчет.

В несколько кликов вы можете визуализировать, какие типы зависят от того, какие типы и т. Д. Это, очевидно, не решит волшебным образом все ваши проблемы, но, вероятно, поставит вас на правильный путь.

0 голосов
/ 20 марта 2009

Что касается инструментов, то FX Cop действительно хорош для выполнения анализа кода, и это бесплатно, но нужно еще кое-что посмотреть - http://www.jetbrains.com/resharper/ для анализа кода на лету, и это способствует хорошему практика развития.

Но это могут быть неправильные инструменты для работы, и они могут не решить вашу проблему, код может быть синтаксически правильным, но есть логическая ошибка, которая вызывает вашу проблему, это как проверка орфографии, все слова могут быть написаны правильно «Evert bird is conical» означает нечто совершенно иное, чем «Каждое слово правильно».

Вам, вероятно, понадобится потратить некоторое время в отладчике или с помощью какого-либо инструмента трассировки, такого как dotTrace Profiler , есть еще пара в Галерея Visual Studio , как http://www.debuginspector.com/

0 голосов
/ 20 марта 2009

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

Некоторые ошибки во время выполнения очень сложно обнаружить, просто взглянув на код (например, условия гонки с несколькими потоками). Таким образом, не существует «инструмента анализа кода», который мог бы исключить время выполнения, просто анализируя код.

Проверьте по этой ссылке несколько примеров отладки: http://msdn.microsoft.com/en-us/library/ms954594.aspx. Вероятно, вам придется выполнить некоторые шаги в вашем коде с помощью отладчика, возможно, отследить некоторые данные в файле журнала, а затем попытаться найти точно, где это идет не так.

...