?

Log in

Sun, Jul. 24th, 2011, 07:20 pm
bronikkk:

Привет всем!

Хотел посоветоваться с вами по одному весьма важному для меня вопросу.
Меня интересует возможность создания статического анализатора
(средства для поиска дефектов без запуска анализируемой программы) для
языков с динамической типизацией данных так, чтобы он действительно
был востребован разработчиками на этих языках.

Это если совсем общо, а теперь больше конкретики. Меня интересуют,
прежде всего, Python, Ruby и JavaScript. Поэтому я и обращаюсь к вам,
потому что, как мне кажется, вы имеете неплохое представление об одном
или нескольких этих языках.

В рамках совсем предварительного, поверхностного изучения вопроса я
наткнулся на этот обзор в одном из блогов (англ. яз.):
http://www.klocwork.com/blog/2009/06/static-analysis-for-rubypython/

С одной стороны, обзор вселяет надежду, так как из него видно, что уже
существующие средства вполне себе убоги, то есть возможностей для
создания чего-то нового масса. С другой стороны, автор поста делает
один не совсем утешительный для меня вывод: <<Ruby/Python developers
rely on tests pretty heavily. In fact, some claim, that tests are the
only right way to deal with bugs in your program. This way a tool for
automatic error detection might even be considered harmful - just
because it can be used as an excuse for not writing tests>>. В связи с
этим мой первый вопрос:

1. Действительно ли вы, как разработчик на Python/Ruby/JavaScript,
считаете, что тесты -- это единственный способ поиска багов в
разрабатываемой программе? Пользовались ли бы вы средством для
статического анализа, если бы оно не было таким убогим, как уже
существующие средства?

Ну и остальные вопросы, в общем-то следуют из первого:

2. С какими багами/дефектами вам как разработчику на
Python/Ruby/JavaScript приходится сталкиваться чаще всего? Какие
баги/дефекты наиболее критичны? Может быть вы слышали о каких-нибудь
критичных багах/дефектах в программах на Python/Ruby/JavaScript,
найденных в последнее время и для поиска которых пригодился бы
статический анализатор?

Ну или, может быть, спрошу немного по-другому:

3. Чего бы вам вообще хотелось от статического анализатора для
программ на вышеперечисленных языков? На ваш взгляд, что из того, чего
вы вам хотелось, реализовать реально и что весьма проблематично?
Реально ли вообще сделать востребованный разработчиками статический
анализатор Python/Ruby/JavaScript?

Мне очень интересно ваше мнение. Если вам есть что сказать по теме, не
ограничиваясь ответами на мои вопросы, буду очень рад и признателен!

Sun, Jul. 24th, 2011 06:40 pm (UTC)
axyd80

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

практически же это не нужно. это самые простые ошибки из всех возможных, которые в 99% случаев ловятся тестами и исправляются за секунду. фактически с ними вообще не сталкиваешься.

интересно было-бы если-б анализатор искал дублирование кода и куски сложного и запутанного кода.

Sun, Jul. 31st, 2011 04:48 pm (UTC)
bronikkk

>интересно было-бы если-б анализатор искал дублирование кода и куски сложного и запутанного кода.

ну то есть Вам бы пригодились только поиск клонов в коде и, возможно, какое-нибудь средство для рефакторинга кода? А поиск багов/дефектов не особо интересн. я правильно Вас понял?

Thu, Aug. 4th, 2011 12:24 pm (UTC)
axyd80

да, верно. Тоже сделал программу, только она ничего не анализирует, а просто считает статистику по проекту и строит графики.

Например тут статистика исходников рельсов (первый график)
http://ruby-lang.info/blog-ru/statistika-koda-i-zakon-parieto-pravilo-80-20-fyp