Как заставить предупреждения сохраняться в визуальной студии - PullRequest
0 голосов
/ 21 декабря 2008

Предположим, у меня есть файлы a.cpp и b.cpp, и я получаю предупреждения в a.cpp и ошибку в b.cpp. Я исправляю ошибку в b.cpp и перекомпилирую - поскольку Visual Studio не нужно перекомпилировать a.cpp, она не напоминает мне о найденных ранее предупреждениях.

Я бы хотел, чтобы предупреждения сохранялись; однако я не хочу, чтобы он воспринимал предупреждения как ошибки (я бы хотел, чтобы он по-прежнему компилировался / запускался даже с предупреждениями). Это возможно?

Ответы [ 6 ]

3 голосов
/ 21 декабря 2008

Вы можете войти в настройки проекта и установить все предупреждения как ошибки на вкладке C / C ++ (категория: Общие).

1 голос
/ 22 декабря 2008

Как уже сказал Эрнан, добавьте пользовательский шаг сборки, который создает копию промежуточного файла, который содержит результаты сборки (предупреждения). Не знаю, как сделать это для именования, но вы можете создать bat-файл, который будет вызываться как пользовательский шаг сборки.

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

1 голос
/ 21 декабря 2008

По сути, вам не повезло. Компиляция C ++ отбрасывает все ошибки и предупреждения. Поскольку он перекомпилирует только файлы .CPP с отсутствующим файлом .OBJ (т. Е. С ошибками, которые произошли в последний раз), вы увидите только ошибки.

У вас есть несколько вариантов. С макушки головы:

  • Напишите макрос, который отвечает на событие завершения сборки. Если он видит какие-либо предупреждения, он может удалить файл .OBJ. Файл .CPP будет скомпилирован снова в следующий раз. К сожалению, это означает, что ваша программа не может работать без перекомпиляции.
  • Вы можете написать макрос, который работает по-другому: при запуске сборки посмотрите, есть ли какие-либо предупреждения, а затем удалите файл .OBJ.
  • Напишите надстройку VS, которая запоминает предупреждения до тех пор, пока файл .CPP не будет скомпилирован снова.
0 голосов
/ 22 декабря 2008

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

Существует несколько причин, по которым вы хотите запускать предупреждения с ошибками:

  • Большинство предупреждений фактически указывают на наличие проблемы с вашим кодом.
  • Если у вас много предупреждений, вы не заметите, если в середине появится новое. Я видел, как это часто случается.
  • Если есть предупреждение, которое вы считаете фальшивым или по какой-то причине просто не можете исправить это сразу, вы можете отключить его. Используйте параметр / w или подходящую #pragma. Обратите внимание, что вы можете переключать его только для определенного файла или даже в определенном месте в вашем коде. Если вы все еще хотите уведомление при компиляции, но там есть сообщение #pragma.
  • Если есть код, который находится вне вашего контроля, но вам просто нужно скомпилировать его в вашу программу, переключить предупреждения для этого конкретного модуля или исходного файла или даже запустить его без / WX. Скорее всего, вы все равно не изменяете код, поэтому пункт 2, вероятно, не так важен.

Я действительно не вижу веских причин не работать с / WX (или -Werror).

0 голосов
/ 22 декабря 2008

Учитывая, что вы не хотите перекомпилировать файлы, которые вызывают предупреждение, один из возможных вариантов - написать небольшую утилиту, которая фильтрует выходные данные компилятора для предупреждений и записывает их в файл .cpp в виде / / TODO комментарий.

Затем IDE поместит их в список задач.

Я ничего не знаю о том, что делает это из коробки, но, вероятно, было бы не так уж и сложно взяться за дело.

Если вы не хотите, чтобы утилита копалась с реальными исходными файлами (а я не уверен, что смогу), вы можете захотеть, чтобы она записала комментарии // TODO в фиктивный файл 'todo.cpp' и иметь этот файл в проекте. Затем они появятся в списке задач, и поскольку файл представляет собой не что иное, как комментарии, он не повлияет на сборку. Просто убедитесь, что утилита умела не добавлять дубликаты в список. Можно написать макрос, который перенесет вас из строки todo.cpp в соответствующее фактическое местоположение предупреждения.

0 голосов
/ 21 декабря 2008

Перестройте свой проект или перекомпилируйте только файл a.cpp. Предупреждения выводятся компилятором, поэтому вы не получите предупреждения для файлов, не включенных в текущую компиляцию.

Вы можете сохранить текущий вывод сборки, перейдя на панель «Вывод» и нажав Ctrl + S (по умолчанию это output-build.txt, если я не плохо помню)

В настройках вашего проекта я думаю, что выходные сообщения сборки могут быть сохранены в файлах. Проверьте это и сообщите свои результаты.

Приветствия

...