Domanda Identificatori per la direttiva del compilatore $ WARN di Delphi


Delphi ha una direttiva del compilatore $ WARN che consente di abilitare o disabilitare in modo selettivo avvertimenti specifici. Il file della guida di Delphi 2009 descrive la sintassi:

{$WARN identifier ON|OFF}

Ma elenca solo gli identificatori per 6 avvisi.

Mi piacerebbe avere un elenco completo di tutti gli identificatori di avviso. In particolare, desidero conoscere gli identificatori per gli avvisi impliciti per le stringhe di stringhe W1057 e W1058 in Delphi 2009.

Sono riuscito a indovinare quello per i cast impliciti Ansi-> Unicode (W1057):

{$WARN IMPLICIT_STRING_CAST OFF}

Googling per quello mi ha trovato l'altro:

{$WARN IMPLICIT_STRING_CAST_LOSS OFF}

Anche se questo risolve il mio bisogno immediato, mi piacerebbe comunque conoscere l'elenco completo degli identificatori di avvertimento. Cose come questa dovrebbero essere documentate.


44
2017-12-18 02:58


origine


risposte:


Ho guardato attraverso l'aiuto e non ho visto una lista completa ... quindi spunta il codice sembra che le costanti di avvertimento del compilatore siano tutte elencate in: CodeGear \ RAD Studio \ 6.0 \ sources \ toolsapi \ DCCStrs.pas

Cerca "Implicit_String_Cast_Loss" e vedrai la costante sIMPLICIT_STRING_CAST_LOSS = 'DCC_IMPLICIT_STRING_CAST_LOSS';

Presumo che il resto delle stringhe DCC_xxx con i corrispondenti X_true / _false / _error definisce ciò che state cercando.

L'aiuto online non è stato molto buono da Delphi 7.


25
2017-12-18 05:05



Darian ha ragione nel dire che DCCStrs.pas elenca gli identificatori usati dal compilatore Delphi. Non mi era venuto in mente di cercare la fonte, dal momento che Delphi non include la fonte nel suo compilatore.

Ho estratto gli identificatori per suggerimenti e avvertenze da quel file:

  • {$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}

52
2017-12-18 06:10



Qualcos'altro non menzionato nella documentazione di Delphi 2009:

La direttiva $ WARN ora ha una terza opzione ERROR oltre a ON e OFF. Quindi puoi avere:

{$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

23
2017-12-19 00:14



Cose come questa dovrebbero essere documentate

Ad oggi, l'elenco completo degli identificatori e i relativi numeri di avviso del compilatore sono elencati nella documentazione all'indirizzo:

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

Estratto:

L'identificatore nella direttiva $ WARN può avere uno dei seguenti valori:

| Avvertimento | Identificatore |
|: -----------------: |: ----------: |
| SYMBOL_DEPRECATED | W1000 |
| SYMBOL_LIBRARY | W1001 |
| (...) | (...) |

2
2018-01-17 13:13