Идентификаторы для директивы компилятора $ WARN Delphi - PullRequest
46 голосов
/ 18 декабря 2008

Delphi имеет директиву компилятора $ WARN, которая позволяет выборочно включать или отключать определенные предупреждения. Файл справки Delphi 2009 описывает синтаксис:

{$WARN identifier ON|OFF}

Но в нем указаны только 6 предупреждений.

Я хотел бы получить полный список всех идентификаторов предупреждений. В частности, я хочу знать идентификаторы для неявных предупреждений о приведении строк W1057 и W1058 в Delphi 2009.

Мне удалось угадать одно из неявных приведений Ansi-> Unicode (W1057):

{$WARN IMPLICIT_STRING_CAST OFF}

Погуглил, нашел другого:

{$WARN IMPLICIT_STRING_CAST_LOSS OFF}

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

Ответы [ 4 ]

55 голосов
/ 18 декабря 2008

Дариан прав, что DCCStrs.pas перечисляет идентификаторы, используемые компилятором Delphi. Мне не пришло в голову искать источник, поскольку Delphi не включает источник в свой компилятор.

Из этого файла я извлек идентификаторы подсказок и предупреждений:

  • {$WARN ASG_TO_TYPED_CONST OFF}
  • {$WARN BAD_GLOBAL_SYMBOL OFF}
  • {$WARN BOUNDS_ERROR OFF}
  • {$WARN CASE_LABEL_RANGE OFF}
  • {$WARN COMBINING_SIGNED_UNSIGNED OFF}
  • {$WARN COMPARING_SIGNED_UNSIGNED OFF}
  • {$WARN COMPARISON_FALSE OFF}
  • {$WARN COMPARISON_TRUE OFF}
  • {$WARN CONSTRUCTING_ABSTRACT OFF}
  • {$WARN CVT_ACHAR_TO_WCHAR OFF}
  • {$WARN CVT_NARROWING_STRING_LOST OFF}
  • {$WARN CVT_WCHAR_TO_ACHAR OFF}
  • {$WARN CVT_WIDENING_STRING_LOST OFF}
  • {$WARN DUPLICATE_CTOR_DTOR OFF}
  • {$WARN DUPLICATES_IGNORED OFF}
  • {$WARN EXPLICIT_STRING_CAST OFF}
  • {$WARN EXPLICIT_STRING_CAST_LOSS OFF}
  • {$WARN FILE_OPEN OFF}
  • {$WARN FILE_OPEN_UNITSRC OFF}
  • {$WARN FOR_LOOP_VAR_UNDEF OFF}
  • {$WARN FOR_LOOP_VAR_VARPAR OFF}
  • {$WARN FOR_VARIABLE OFF}
  • {$WARN GARBAGE OFF}
  • {$WARN HIDDEN_VIRTUAL OFF}
  • {$WARN HIDING_MEMBER OFF}
  • {$WARN HPPEMIT_IGNORED OFF}
  • {$WARN HRESULT_COMPAT OFF}
  • {$WARN IMAGEBASE_MULTIPLE OFF}
  • {$WARN IMPLICIT_IMPORT OFF}
  • {$WARN IMPLICIT_STRING_CAST OFF}
  • {$WARN IMPLICIT_STRING_CAST_LOSS OFF}
  • {$WARN IMPLICIT_VARIANTS OFF}
  • {$WARN INVALID_DIRECTIVE OFF}
  • {$WARN LOCAL_PINVOKE OFF}
  • {$WARN LOCALE_TO_UNICODE OFF}
  • {$WARN MESSAGE_DIRECTIVE OFF}
  • {$WARN NO_CFG_FILE_FOUND OFF}
  • {$WARN NO_RETVAL OFF}
  • {$WARN OPTION_TRUNCATED OFF}
  • {$WARN PACKAGE_NO_LINK OFF}
  • {$WARN PACKAGED_THREADVAR OFF}
  • {$WARN PRIVATE_PROPACCESSOR OFF}
  • {$WARN RLINK_WARNING OFF}
  • {$WARN STRING_CONST_TRUNCED OFF}
  • {$WARN SUSPICIOUS_TYPECAST OFF}
  • {$WARN SYMBOL_DEPRECATED OFF}
  • {$WARN SYMBOL_EXPERIMENTAL OFF}
  • {$WARN SYMBOL_LIBRARY OFF}
  • {$WARN SYMBOL_PLATFORM OFF}
  • {$WARN TYPED_CONST_VARPAR OFF}
  • {$WARN TYPEINFO_IMPLICITLY_ADDED OFF}
  • {$WARN UNICODE_TO_LOCALE OFF}
  • {$WARN UNIT_DEPRECATED OFF}
  • {$WARN UNIT_EXPERIMENTAL OFF}
  • {$WARN UNIT_INIT_SEQ OFF}
  • {$WARN UNIT_LIBRARY OFF}
  • {$WARN UNIT_NAME_MISMATCH OFF}
  • {$WARN UNIT_PLATFORM OFF}
  • {$WARN UNSAFE_CAST OFF}
  • {$WARN UNSAFE_CODE OFF}
  • {$WARN UNSAFE_TYPE OFF}
  • {$WARN UNSUPPORTED_CONSTRUCT OFF}
  • {$WARN USE_BEFORE_DEF OFF}
  • {$WARN WIDECHAR_REDUCED OFF}
  • {$WARN XML_CREF_NO_RESOLVE OFF}
  • {$WARN XML_EXPECTED_CHARACTER OFF}
  • {$WARN XML_INVALID_NAME OFF}
  • {$WARN XML_INVALID_NAME_START OFF}
  • {$WARN XML_NO_MATCHING_PARM OFF}
  • {$WARN XML_NO_PARM OFF}
  • {$WARN XML_UNKNOWN_ENTITY OFF}
  • {$WARN XML_WHITESPACE_NOT_ALLOWED OFF}
  • {$WARN ZERO_NIL_COMPAT OFF}
26 голосов
/ 18 декабря 2008

Я просмотрел справку и не увидел полный список ... поэтому, осматривая код, кажется, что все константы предупреждения компилятора перечислены в: CodeGear \ RAD Studio \ 6.0 \ sources \ toolsapi \ DCCStrs.pas

Ищите «Implicit_String_Cast_Loss», и вы увидите постоянную sIMPLICIT_STRING_CAST_LOSS = 'DCC_IMPLICIT_STRING_CAST_LOSS';

Я бы предположил, что остальные строки DCC_xxx с соответствующими определениями X_true / _false / _error - это то, что вы ищете.

Онлайн-помощь не очень хороша с Delphi 7.

24 голосов
/ 19 декабря 2008

Что-то еще, не упомянутое в документации Delphi 2009:

Директива $ WARN теперь имеет третью опцию ERROR в дополнение к ON и OFF. Таким образом, вы можете иметь:

{$WARN IMPLICIT_STRING_CAST OFF} to disable the warning
{$WARN IMPLICIT_STRING_CAST ON} to enable warning
{$WARN IMPLICIT_STRING_CAST ERROR} to turn the warning into an error
4 голосов
/ 17 января 2018

Такие вещи должны быть задокументированы

На сегодняшний день полный список идентификаторов и их номеров предупреждений компилятора приведен в документации по адресу:

http://docwiki.embarcadero.com/RADStudio/en/Warning_messages_(Delphi)

Выдержки:

Идентификатор в директиве $ WARN может иметь любое из следующих значений:

|      Warning      | Identifier |
|:-----------------:|:----------:|
| SYMBOL_DEPRECATED | W1000      |
| SYMBOL_LIBRARY    | W1001      |
| (...)             | (...)      |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...