LINUX.ORG.RU
ФорумTalks

[firefox]Mozilla статический анализ кода

 


0

0

Смотрю презентацию про статический анализ кода в Firefox.

Цифры поражают:

1.7 миллиона строк C++ и 1 миллион строк на Javascript.

В начале презентации упоминается парсер Elsa и препроцессор mcpp

Как я понял для статического анализа кода применяется комплекс Dehydra/Treehydra в основе своей состоящий из плагинов для GCC4.5, который позволяет создавать код на Javascript, который проверяет код C++.

Некоторые из возможны проверок:

запрет на наследование класса

требование переопределения метода

требование прохождения control flow через определенную точку программы (для отлавливания ошибочных return внутри макросов)

Для ускорения анализа используются идеи ESP: path-sensitive program verification in polynomial time

На основе статического анализа создается индекс DXR, который позволяет посмотреть, где определяется класс или откуда вызывается функция. Вроде бы он должен давать более точную информацию, чем предыдущий индекс MXR/LXR.

Edit: Ссылка на презентацию http://vimeo.com/12614626

Ссылка на слайды http://code.galois.com/talk/2010/10-06-glek/



Последнее исправление: sign (всего исправлений: 2)

Смотрю презентацию про статический анализ кода в Firefox.

Хорошо тебе. Я б может тоже посмотрел, но ссылку ты не дал ;-).

vga ★★
()
Ответ на: комментарий от vga

> Хорошо тебе. Я б может тоже посмотрел, но ссылку ты не дал ;-).

Добавил ссылку в исходное сообщение.

sign
() автор топика

Мне всегда интересно было, за строки считаются всякие мелочи, типа одиноких закрывающих «}» или просто пробелы для визуального форматирования между функциями и прочие мелочи?

Siado ★★★★★
()
Ответ на: комментарий от Cancellor

Ну если просто запустить на репозитории (и если я правильно написал однострочник) то по javascript получаем 1 млн. сырых строчек, по *.h, *.c, *.cpp - 4.4 млн. сырых строчек.

find . -name "*.h" -exec wc {} \; | awk ' {total = total + $1; n++}; END { print n; print total}'
5233
1046464

find . -name "*.c" -exec wc {} \; | awk ' {total = total + $1; n++}; END { print n; print total}'
1945
1442923

find . -name "*.cpp" -exec wc {} \; | awk ' {total = total + $1; n++}; END { print n; print total}'
3492
1933538

find . -name "*.js" -exec wc {} \; | awk ' {total = total + $1; n++}; END { print n; print total}'
6616
1039327
sign
() автор топика

Чем больше кода - не означает выше качество. Исходя из 1.7 мил. можно считать что у них порядка 17 тыс. багов :)

gh0stwizard ★★★★★
()

>и 1 миллион строк на Javascript.

теперь вам понятно почему браузер называется тормозиллой?

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от stevejobs

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

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от stevejobs

Да, люди согласны на многое, лишь бы не пришлось использовать Жабу.

GAMer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.