Ваш подход к предупрежденям (warnings) в проекте?
Как известно, ошибки тем дороже в исправлении, чем дольше они живут. Варнинги созданы специально для того, чтобы предупреждать о дефектах, которые могут привести к ошибкам. Их нужно править сразу, и это не сложно.

Определенные типы варнингов, можно просто отключить, если вы считаете, что они ошибочно вас предупреждают. Можно и нужно отключать для сторонних библиотек.

Использования варнингов для напоминания TODO, я считаю, следует делать тогда, когда это TODO должно быть реализовано в скором времени, имеет приоритет critical. На месяца запускать не следует.

В итоге. В проекте варнингов быть не должно, и их нужно сразу убирать:
* исправлять дефект
* Отключать классы варнингов, стороние варнинги.
* Реализовывать то, о чем они говорят, если это TODO.

P. S. По сути, все, что вы написали — логично, и не является взаимоисключающим. Тут не одно выбрать нужно, а все использовать, с умом.
Я стараюсь избавляться от предупреждений, хотя опцию в компиляторе не включаю. Разумеется не включаю и для сторонних библиотек — это дело их авторов. Писать TODO в коде, на мой взгляд, не самая лучшая идея — даже если это мой личный проект, лучше добавить отдельный файл со списком задач.