49 votes

Identifiants pour la directive de compilation $WARN de Delphi

Delphi possède une directive de compilation $WARN qui permet d'activer ou de désactiver de manière sélective des avertissements spécifiques. Le fichier d'aide de Delphi 2009 décrit la syntaxe :

{$WARN identifier ON|OFF}

Mais il ne répertorie les identifiants que pour 6 avertissements.

J'aimerais avoir une liste complète de tous les identifiants d'alerte. En particulier, je voudrais connaître les identificateurs des avertissements W1057 et W1058 relatifs au remplacement implicite de chaînes de caractères dans Delphi 2009.

J'ai réussi à deviner celui pour les castings implicites Ansi->Unicode (W1057) :

{$WARN IMPLICIT_STRING_CAST OFF}

En cherchant sur Google, j'ai trouvé l'autre :

{$WARN IMPLICIT_STRING_CAST_LOSS OFF}

Bien que cela réponde à mon besoin immédiat, j'aimerais toujours connaître la liste complète des identifiants d'alerte. Ce genre de choses devrait être documenté.

61voto

Jan Goyvaerts Points 10402

Darian a raison de dire que le fichier DCCStrs.pas liste les identifiants utilisés par le compilateur Delphi. Je n'avais pas pensé à chercher dans les sources, puisque Delphi n'inclut pas les sources de son compilateur.

J'ai extrait les identifiants des conseils et des avertissements de ce fichier :

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

9 votes

Ou dans n'importe quelle unité, CTRL-O, O pour que Delphi affiche la liste complète des options que vous avez actuellement actives. L'avantage de ce raccourci est qu'il est susceptible de fonctionner également dans les futures versions de Delphi (et de vous donner les nouveaux avertissements/options).

28voto

Darian Miller Points 4915

J'ai regardé l'aide et je n'ai pas vu de liste complète... alors en fouillant dans le code, il semble que les constantes d'avertissement du compilateur soient toutes listées dans.. : CodeGear \RAD Studio \6.0\sources\toolsapi\DCCStrs.pas

Recherchez "Implicit_String_Cast_Loss" et vous verrez la constante sIMPLICIT_STRING_CAST_LOSS = 'DCC_IMPLICIT_STRING_CAST_LOSS' ;

Je suppose que le reste des chaînes DCC_xxx avec les définitions X_true/_false/_error correspondantes sont ce que vous recherchez.

L'aide en ligne n'est pas très bonne depuis Delphi 7.

0 votes

Note : ceci est maintenant documenté dans l'aide : docwiki.embarcadero.com/RADStudio/Rio/fr/

26voto

Jan Goyvaerts Points 10402

Autre chose qui n'est pas mentionné dans la documentation de Delphi 2009 :

La directive $WARN a maintenant une 3ème option ERROR en plus de ON et OFF. Vous pouvez donc avoir :

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

6voto

Ce genre de choses devrait être documenté

À partir d'aujourd'hui, la liste complète des identifiants et leurs numéros d'avertissement du compilateur figurent dans la documentation à l'adresse suivante :

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

Extrait :

L'identifiant dans la directive $WARN peut avoir l'une des valeurs suivantes :

|      Warning      | Identifier |
|:-----------------:|:----------:|
| SYMBOL\_DEPRECATED | W1000      |
| SYMBOL\_LIBRARY    | W1001      |
| (...)             | (...)      |

3voto

Uli Gerhardt Points 9321

Vous pouvez également trouver ce tutoriel utile. Mais c'est en allemand.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X