История изменений
Исправление wandrien, (текущая версия) :
- Ты должен компилировать код по возможности с максимальным количеством включенных дианостик. Потому что базовый синтаксис Си - картошка. И без диагностик компилятор молча проглатывает то, что должно быть ошибками согласно любому здравому смыслу.
- Выборочно выключать надо те диагностики, которые генерируют большое количество бесполезных предупреждений и не указывают на реальные проблемы в коде. Например, в коде, над которым я сейчас работаю - это
-Wno-unused-parameter -Wno-missing-field-initializers
. - В идеале, с настройками, заданными в п 1 и 2, код должен компилироваться с нулём диагностик на машине разработчика и на сборочной ферме. Это нужно, чтобы сразу, как только появляется новая диагностика при компиляции, она была тут же заметна, а не утонула в море других.
- Кроме этого, стоит периодически проверять код при помощи статических анализаторов, встроенных в gcc, в clang и при помощи cppcheck. Разумеется, если эти инструменты актуальны для целевой платформы. Они нередко дают false positives, так что требуют внимательности - где он по делу возмущается, а где нет.
- Чтобы энфорсить п. 3, на девелоперской машине сборки выполняются с
-Werror
. Чтобы меньше руки чесались коммитить код с диагностиками в git. - Если продукт поставлятся в виде исходного кода, то в релизном тарболе
-Werror
по умолчанию должен быть выключен. Это необходимо потому, что пользователь может компилировать код другой версией компилятора или с другими версиями зависимостей, и на его машине могут отображаться дополнительные диагностики. Они не должны мешать компиляции.
Исправление wandrien, :
- Ты должен компилировать код по возможности с максимальным количеством включенных дианостик. Потому что базовый синтаксис Си - картошка. И без диагностик он молча проглатывает то, что должно быть ошибками согласно любому здравому смыслу.
- Выборочно выключать надо те диагностики, которые генерируют большое количество бесполезных предупреждений и не указывают на реальные проблемы в коде. Например, в коде, над которым я сейчас работаю - это
-Wno-unused-parameter -Wno-missing-field-initializers
. - В идеале, с настройками, заданными в п 1 и 2, код должен компилироваться с нулём диагностик на машине разработчика и на сборочной ферме. Это нужно, чтобы сразу, как только появляется новая диагностика при компиляции, она была тут же заметна, а не утонула в море других.
- Кроме этого, стоит периодически проверять код при помощи статических анализаторов, встроенных в gcc, в clang и при помощи cppcheck. Разумеется, если эти инструменты актуальны для целевой платформы. Они нередко дают false positives, так что требуют внимательности - где он по делу возмущается, а где нет.
- Чтобы энфорсить п. 3, на девелоперской машине сборки выполняются с
-Werror
. Чтобы меньше руки чесались коммитить код с диагностиками в git. - Если продукт поставлятся в виде исходного кода, то в релизном тарболе
-Werror
по умолчанию должен быть выключен. Это необходимо потому, что пользователь может компилировать код другой версией компилятора или с другими версиями зависимостей, и на его машине могут отображаться дополнительные диагностики. Они не должны мешать компиляции.
Исправление wandrien, :
- Ты должен компилировать код по возможности с максимальным количеством включенных дианостик. Потому что базовый синтаксис Си - картошка. И без диагностик он молча проглатывает то, что должно быть ошибками согласно любому здравому смыслу.
- Выборочно выключать надо те диагностики, которые генерируют большое количество бесполезных предупреждений и не указывают на реальные проблемы в коде. Например, в коде, над которым я сейчас работаю - это
-Wno-unused-parameter -Wno-missing-field-initializers
. - В идеале, с настройками, заданными в п 1 и 2, код должен компилироваться с нулём диагностик на машине разработчика и на сборочной ферме. Это нужно, чтобы сразу, как только появляется новая диагностика при компиляции, она была тут же заметна, а не утонула в море других.
- Кроме этого, стоит периодически проверять код при помощи статических анализаторов, встроенных в gcc, в clang и при помощи cppcheck. Разумеется, если эти инструменты актуальны для целевой платформы. Они нередко дают false positives, так что требуют внимательности - где он по делу возмущается, а где нет.
- Чтобы энфорсить п. 3, на девелоперской машине сборки выполняются с
-Werror
. Чтобы меньше руки чесались коммитить код с диагностиками в git. - Если продукт поставлятся в виде исходного кода, то в релизном тарболе
-Werror
по умолчанию должен быть выключен. Это необходимо потому, что пользователь может компилировать код другой версией компилятора или с другими версиями зависмостей, и на его машине могут отображаться дополнительные диагностики. Они не должны мешать компиляции.
Исправление wandrien, :
- Ты должен компилировать код по возможности с максимальным количеством включенных дианостик. Потому что базовый синтаксис Си - картошка. И без диагностик он молча проглатывает то, что должно быть ошибками согласно любому здравому смыслу.
- Выборочно выключать надо те диагностики, которые генерируют большое количество бесполезных предупреждений и не указывают на реальные проблемы в коде. Например, в коде, над которым я сейчас работаю - это
-Wno-unused-parameter -Wno-missing-field-initializers
. - В идеале, с настройками, заданными в п 1 и 2, код должен компилироваться с нулём диагностик на машине разработчика и на сборочной ферме. Это нужно, чтобы сразу, как только появляется новая диагностика при компиляции, она была тут же заметна, а не утонула в море других.
- Кроме этого, стоит периодически проверять код при помощи статических анализаторов, встроенных в gcc, в clang и при помощи cppcheck. Разумеется, если эти инструменты актуальны для целевой платформы.
- Чтобы энфорсить п. 3, на девелоперской машине сборки выполняются с
-Werror
. Чтобы меньше руки чесались коммитить код с диагностиками в git. - Если продукт поставлятся в виде исходного кода, то в релизном тарболе
-Werror
по умолчанию должен быть выключен. Это необходимо потому, что пользователь может компилировать код другой версией компилятора или с другими версиями зависмостей, и на его машине могут отображаться дополнительные диагностики. Они не должны мешать компиляции.
Исходная версия wandrien, :
- Ты должен компилировать код по возможности с максимальным количеством включенных дианостик. Потому что базовый синтаксис Си - картошка. И без диагностик он молча проглатывает то, что должно быть ошибками согласно любом здравому смыслу.
- Выборочно выключать надо те диагностики, которые генерируют большое количество бесполезных предупреждений и не указывают на реальные проблемы в коде. Например, в коде, над которым я сейчас работаю - это
-Wno-unused-parameter -Wno-missing-field-initializers
. - В идеале, с настройками, заданными в п 1 и 2, код должен компилироваться с нулём диагностик на машине разработчика и на сборочной ферме. Это нужно, чтобы сразу, как только появляется новая диагностика при компиляции, она была тут же заметна, а не утонула в море других.
- Кроме этого, стоит периодически проверять код при помощи статических анализаторов, встроенных в gcc, в clang и при помощи cppcheck. Разумеется, если эти инструменты актуальны для целевой платформы.
- Чтобы энфорсить п. 3, на девелоперской машине сборки выполняются с
-Werror
. Чтобы меньше руки чесались коммитить код с диагностиками в git. - Если продукт поставлятся в виде исходного кода, то в релизном тарболе
-Werror
по умолчанию должен быть выключен. Это необходимо потому, что пользователь может компилировать код другой версией компилятора или с другими версиями зависмостей, и на его машине могут отображаться дополнительные диагностики. Они не должны мешать компиляции.