Question

Je suis le portage du code d'une bibliothèque-cadre à l'autre, ce qui me demande de commenter les grandes sections de code juste pour le compiler, puis les restaurer avec soin. En attendant, je reçois des tonnes de mises en garde à cause de tout le code en commentaire. Je décide donc d'écrire un fichier include rapide pour les supprimer:

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code'}
{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}

J'inclus cela dans toutes les unités qui me donnent des tonnes de mises en garde, mais maintenant, quand je compile, renvoyant le message du compilateur comme suit:

[DCC Warning] unfinished.inc (1): Contre-indications de W1054 supprimées à l'unité transposée avec code commenté-out

Je voudrais qu'il me dise que l'avertissement provient de l'unité faisant l'y compris, et non l'inclure fichier lui-même. Est-il possible de le faire, ou de travailler le nom de l'unité dans le message, sans toutefois déplacer la directive $ MESSAGE sur le fichier et inclure dans chaque unité où je l'ai fait?

Était-ce utile?

La solution

Voici une astuce qui utilise le fait que l'indice de compilateur pour « méthodes privées inutilisées » contient le nom de l'unité, la classe est déclarée, même si la classe avec la méthode privée est déclarée dans un fichier d'inclusion.

Cela exige que la directive comprend pour votre fichier d'inclusion apparaît dans une partie de l'unité, où les déclarations sont autorisées , donc soit après la clause uses dans la section d'interface ou après la clause uses de la section de mise en œuvre.

interface

uses Foo, Bar, Socks;

{$include Unfinished.inc}

Votre fichier include devrait ressembler à ceci:

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code, Unit name see next line'}
type
  TUnit_With_Suppressed_Warnings = class
  private
    procedure UnitWithSuppressedWarnings; virtual; abstract;
  end;

{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}

Maintenant, vous obtiendrez les deux messages suivants pour chaque unité qui comprend ce fichier comprennent:

  

[DCC Avertissement] unfinished.inc (1): Avertissements pour l'unité W1054 réprimées avec le code commenté Unported-out, le nom de l'unité voir la ligne suivante
  [Astuce DCC] actualunitname.pas (5). Le symbole UnitWithSuppressedWarnings privé a été déclaré mais jamais utilisé

Notez que le nom de l'unité réelle apparaît dans la deuxième ligne.

Remarque: Vous ne verrez pas la deuxième ligne, si des notes du compilateur sont éteints

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top