LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

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

Исправление wandrien, :

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

Исправление wandrien, :

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

Исправление wandrien, :

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

Исходная версия wandrien, :

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