Кроме того, в файле PHP.INI есть параметр:
max_input_vars
, который в моей версии PHP: 5.4.16 по умолчанию - 1000.
Из руководства: «Сколько входных переменных может быть принято (предел применяется к $ _GET, $ _POST и $ _COOKIE суперглобальным отдельно)»
Ref .: http://www.php.net/manual/ ан / info.configuration.php # ini.max-ввода-вары
Википедия поддерживает список инструментов статического анализа кода для различных языков (включая C).
Лично я использовал оба PC-Lint
] и Шина
. Лучший выбор зависит от типа написанного вами приложения. Однако независимо от того, какой инструмент вы используете, соотношение сигнал / шум будет низким, пока вы правильно не настроите инструмент и код.
PC-Lint
- самый мощный инструмент Lint, который я использовал. Если вы добавите его в существующий проект, отношение сигнал / шум может быть низким. Однако после того, как инструмент и ваш код настроены правильно, его можно использовать как часть стандартного процесса сборки. В последнем крупном проекте, в котором я его использовал, мы настроили его так, чтобы предупреждения PC-Lint
нарушали сборку. Лицензии на PC-Lint стоят 389 долларов, но это того стоит.
Splint
- отличный инструмент с открытым исходным кодом. Я использовал его в нескольких проектах, но обнаружил, что его может быть сложно настроить при использовании компилятора с расширениями, отличными от ANSI C (например, в проектах встроенных систем).
Valgrind
также заслуживает рассмотрения в качестве инструмента динамического анализа.
Вы специально запросили отзывы о SourceMonitor
. Этот инструмент предоставляет интересные показатели вашего кода, но его следует использовать в качестве дополнения к хорошему инструменту Lint, поскольку он не обеспечивает такого рода анализ.
Как указано на их домашней странице, SourceMonitor
будет:
... узнайте, сколько у вас кода и
Valgrind
также стоит рассматривать как инструмент динамического анализа.
Вы специально запросили отзывы о
SourceMonitor
. Этот инструмент предоставляет интересные показатели вашего кода, но его следует использовать в качестве дополнения к хорошему инструменту Lint, поскольку он не обеспечивает такого рода анализ.Как указано на их домашней странице,
SourceMonitor
будет:... узнайте, сколько у вас кода и
Valgrind
также заслуживает рассмотрения в качестве инструмента динамического анализа.
Вы специально запросили отзывы о
SourceMonitor
. Этот инструмент предоставляет интересные показатели вашего кода, но его следует использовать в качестве дополнения к хорошему инструменту Lint, поскольку он не обеспечивает такого рода анализ.Как указано на их домашней странице,
SourceMonitor
будет:... узнайте, сколько у вас кода и определить относительную сложность ваши модули. Например, вы можете использовать SourceMonitor для идентификации кода который, скорее всего, будет содержать дефекты и поэтому требует формального обзора.
Я использовал его в недавнем проекте и обнаружил, что он прост в использовании (даже для кода встроенных систем). Метрика сложности - отличный ресурс для разработки кода, который будет менее подвержен ошибкам и проще в обслуживании.
SourceMonitor
предоставляет красивые графики своих выходных данных, а также хорошо отформатированный XML, если вы хотите автоматизировать сбор метрик. Единственным недостатком является то, что инструмент работает только в Windows.
I'm a big fan of David Evans's work on LC/Lint, which has apparently had its name changed to Splint. It is very aggressive, and you can tell it a lot of useful information by adding annotations to your code. It is designed to be used with programmer annotations. It will function without them, but if you try to use it as a simple checker without providing any annotations, you will probably be disappointed. If what you want is totally automated checking, and if you can deal with a Windows-only tool, you're better off with Gimpel's PC-Lint. Jim Gimpel has had happy customers for over 25 years.
Мы используем PC-Lint и очень им довольны.
Кажется, есть несколько лагерей относительно подавления и настройки сообщений:
Мы склонны попадать где-то между второй и третьей категориями. Это действительно означает смехотворный дамп текста 100 МБ + (одна ошибка на строку) на каждый линт, проходящий через основные библиотеки (много старого кода).
Пользовательский инструмент, похожий на diff
, отслеживает изменения и отправляет их по электронной почте автору коммита, который сводит количество, на которое большинство людей должны смотреть, до нескольких строк. Мы собираем интересную статистику об ошибках с течением времени с помощью базового анализа данных.
Есть шина , хотя, честно говоря, мне никогда не удавалось заставить ее работать; на моей платформе он действительно слишком активен. На практике мои наиболее часто используемые «lint» - это следующие предупреждающие флаги для gcc
-std=c89 -pedantic -W -Wall -Wstrict-prototypes -Wunreachable-code -Wwrite-strings -Wpointer-arith -Wbad-function-cast -Wcast-align -Wcast-qual
. Конечно, я почти забыл, что означает половина из них. Но они улавливают довольно много вещей.
Я всегда использовал PCLint , и он мне очень понравился. Хотелось бы, чтобы они попали в C # ... Это те, у кого во всех журналах появляются популярные викторины по коду C или C ++.
Он есть в проект llvm clang http://clang-analyzer.llvm.org . Сам я не пробовал, но собираюсь это сделать.
В действии выглядит неплохо: http://www.mikeash.com/?page=pyblog/friday-qa-2009-03-06-using-the-clang-static-analyzer.html Выше для Objective-C, но он должен быть таким же для C.