Я просто хотел узнать, в чем разница между статическим анализом кода и проверкой кода. Как каждый из этих двух сделан? В частности, какие инструменты доступны сегодня для обзора кода / статического анализа PHP? Я также хотел бы знать о хороших инструментах для обзора кода для любого языка.
code-quality
terminology
code-reviews
quality
Томас Оуэнс
источник
источник
Ответы:
Проверка кода - это то, что делают люди, статический анализ - это то, что делают машины. Есть (иногда хорошие) инструменты статического анализа. Проверка кода - это когда коллега / наставник / профессор / друг просматривает ваш код и дает вам конструктивную критику.
С другой стороны, статический анализ - это автоматизированный процесс, в котором машина, информированная тем, что она знает о языке, который она анализирует (обычно из системы типов), анализирует программу и пытается выбрать вещи, которые могут быть неверными, неэффективный, плохой стиль или иным образом неоптимальный.
источник
Статический анализ - это процесс анализа программного обеспечения без его выполнения. Это очень хорошо и рекомендуется, но вы должны иметь в виду, что
Оба этих подхода страдают от недостатка контекста: они не знают, чего должен достичь sw.
Проверка кода выполняется другим программистом, который предположительно знает это и может проверить
Это намного дороже и имеет различную степень повторяемости, но очень помогает.
Как всегда, нет ни одной серебряной пули, которая бы исправила все ошибки и избежала всех проблем. Рекомендуется применять - насколько это возможно, учитывая место, код, время, три формы проверки (статическая, динамическая, больше глаз (и мозгов), реально смотрящих на код).
PS: я должен отметить, что обычно гораздо лучше применять инструменты с нуля. Преобразование унаследованной системы является гораздо менее приятным опытом из-за ложных срабатываний. Если вы начинаете с нуля и всегда стремитесь поддерживать чистоту инструмента анализа, вы, вероятно, избежите многих проблем.
pps: что касается инструментов, это зависит от языка. В мире C и C ++ вы можете начать с просмотра самой Visual Studio, которая содержит встроенный инструмент статического анализа. Относительно полный список можно найти в Википедии.
ppps: статический анализ больше подходит для статических языков, таких как C или C ++. Для Python может быть действительно трудно сказать, будет ли имя, которое ссылается на список в точке, ссылаться на список для остальной части программы из-за его динамических свойств. Это не означает, что ничего нельзя сделать, как показывает JIT-попытка, подобная PyPy .
источник
Проверка кода - это когда старший или специализированный орган проверяет ваш код, ваш способ кодирования, стандарты, соблюдаемые в коде, и, в частности, логический уровень кода
Что касается статического анализа, то это анализ компьютерного программного обеспечения, который выполняется без фактического выполнения программ, созданных из этого программного обеспечения (анализ, выполняемый на исполняемых программах, называется динамическим анализом).
Список инструментов согласно технологии приведен в ссылке ниже
Список инструментов для статического анализа
Следовательно, обзор кода и статический анализ - это совершенно разные термины.
источник
Обзор кода - более качественная оценка, статический анализ кода - более количественная оценка.
против Fe
Хотя реальные ошибки могут (очевидно) существовать и обнаруживаться SCA
источник
Статический анализ - это когда артефакт анализируется без выполнения. Хотя он может применяться к любому артефакту, он часто применяется к исходному или объектному коду и относится к использованию специальных инструментов для анализа и получения информации об этих рабочих продуктах. Эти инструменты создают отчеты, которые интерпретируются инженером для использования при определении качества строящейся системы и в качестве руководства по планированию разработки и обслуживания. В Википедии есть список инструментов для статического анализа , упорядоченный по языкам и с кратким описанием их возможностей.
Отзывы - это оценка человеком какого-либо рабочего продукта, который может быть кодом. Обзоры могут также проводиться на дизайн или другие документы. Идея состоит в том, что люди, знакомые с рабочим продуктом, а не разработчиком, смотрят на него, чтобы найти ошибки, начиная от проблем безопасности до нарушений стандарта кодирования.
Технически анализ кода можно считать формой статического анализа, поскольку код фактически не выполняется во время просмотра. Однако в общепринятой терминологии «статический анализ» обычно относится к машинному анализу исходных или объектных файлов, в то время как «обзор» указывает, что анализом занимаются люди.
источник
Проверка кода - это полезная техника для обнаружения проблем с исходным кодом на самой ранней стадии. В рамках этого упражнения были выявлены и устранены многие проблемы, такие как производительность, масштабируемость и стандарты кодирования. Это улучшит качество кода.
Статический анализ используется для анализа метрик качества кода, таких как циклометрическая сложность, индекс ремонтопригодности, глубина наследования и связи классов. Различные инструменты, доступные на рынке для анализа качества кода. C # разработчик использует Microsoft Visual Studio для создания метрических отчетов.
источник
Статический анализ кода выполняется с помощью автоматизированного инструмента, проверка кода выполняется с людьми, прежде чем код будет зафиксирован.
Инструменты для проверки кода:
1. вне сравнения
2. разница программного обеспечения для контроля версий
Эти инструменты всегда используются для генерации разницы между старой версией и новой версией.
источник