Как написать статический анализатор кода для .net

StackOverflow https://stackoverflow.com/questions/74561

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

FXCop это хорошее начало для проблем/ошибок кодирования, СтильКоп хорош для стиля кодирования (очевидно), но если ни один из этих двух не работает, вы можете либо написать парсер самостоятельно, либо использовать ВБкодепровайдер класс в .Net Framework

Другие советы

Вместо того, чтобы писать собственный статический анализатор кода, я рекомендую вам использовать FXCop:и вместо этого напишите собственные правила FxCop для своих нужд.Это сэкономит вам много времени.http://www.binarycoder.net/fxcop/

Я бы посоветовал вам использовать Жандарма Моно.Это очень хороший инструмент с множеством встроенных правил.Он также генерирует хорошие отчеты в формате HTML.

если вам нужно больше архитектурного понимания, используйте NDepend.Этот инструмент не перестает меня удивлять.Он может сделать гораздо больше, чем FxCop.Хотя это коммерческая версия, но есть бесплатная пробная версия.

Начните с FxCop.Если вы не можете сделать то, что пытаетесь, попробуйте что-нибудь вроде NStatic или NDepend.

Лучшие варианты — использовать FxCop или StyleCop и при необходимости писать собственные правила.

Используйте FxCop, это не тот проект, которым вы хотите заниматься лично.Используемые правила синтаксического анализа/лексики и возможные уловы были бы безумными.Единственный способ, которым я мог себе это представить, сохранив хоть капельку здравомыслия, — это использовать Lisp благодаря чрезвычайной выразительности, но, опять же, лучше всего использовать FxCop.

Если по какой-то (догматической?) причине вам необходимо написать собственный собственный инструмент, я бы рекомендовал написать программу на Лиспе, которая выполняет только базовую проверку правил.Не пытайтесь сделать это всеобъемлющим, мы говорим о том рубеже, с которым сталкиваются исследователи ИИ с точки зрения возможностей анализа программного обеспечения.

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

Я согласен с одним из авторов, что это будет довольно сложная задача, но вместо Lisp я бы начал с F #, точно так же, как Microsoft сделала для своего стороннего инструмента анализа драйверов Windows:

http://arstechnica.com/journals/microsoft.ars/2005/11/10/1796

F# разделяет выразительность Lisp (ну, почти) и работает в CLR так же, как VB.NET, что упрощает все.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top