2009-06-10 13 views
9

Y at-il un moyen de forcer le compilateur Delphi pour afficher tous les conseils et avertissements tout le temps?Comment forcer le compilateur Delphi pour afficher tous les conseils et avertissements

Voici le comportement que je vois actuellement en Delphi 6:

  1. Check out de nouvelle copie de ma demande de contrôle de source
  2. projet Open in Delphi et Compile
  3. Tous les conseils et avertissements pour le projet sont affichés
  4. Faire un changement dans une unité
  5. Compile
  6. Seuls les conseils et avertissements pour Les unités modifiées sont affichées

Alors, j'ai pensé que je pourrais peut-être tromper Delphi en supprimant tous les fichiers dcu pour le forcer à tout recompiler. Pas de chance. Le compilateur recompile en fait toutes les unités, mais n'affiche pas les indices et les avertissements pour ces unités.

EDIT: L'exécution d'une génération complète (Project> Build) donne les mêmes résultats malheureux.

NOUVELLES INFORMATION: Si je modifie une unité, puis Compiler, j'obtiens les avertissements. Cependant, si je modifie une unité puis Build, je ne reçois pas les avertissements. Je pense que cela indique que les avertissements sont éteints quelque part. Peut-être dans une bibliothèque tierce partie?

Il semble qu'il devrait y avoir un moyen de demander à Delphi de réafficher toutes les astuces et les avertissements qui ne nécessitent pas de vérifier une nouvelle copie du contrôle de source ou de modifier chaque unité un par un .

+0

Delphi 1 ou Delphi 2009, ou quelque chose entre? Il serait utile de savoir ... – Roddy

+0

J'utilise Delphi 6 –

Répondre

3

Je vérifier si vous activez les avertissements de certaines de vos unités.
Selon la dernière modification des unités, l'ordre de compilation peut changer.Dans certains cas, les avertissements peuvent rester désactivés pour une unité qui a été compilée après, alors que fraîchement sortie du contrôle de version, elle a été compilée avant, avec les avertissements.
Portez une attention toute particulière à n'importe quel fichier Include que vous pouvez utiliser.

+0

Je ne suis pas explicitement tous les fichiers, y compris (utilise au-delà des déclarations) et mon interprétation des fichiers d'aide sur les directives $ WARN et $ AVERTISSEMENTS est qu'ils ne sont pas applicables au-delà de la portée de l'unité actuelle. En tout cas, je n'ai aucune de ces directives dans mon code. Une unité utilisée provenant d'une bibliothèque tierce peut-elle causer le problème? –

+0

Nous avons eu ce problème avec le code 3ème partie où le champ d'application ne se limite pas comme prévu. –

6

Les astuces et les avertissements sont générés par le compilateur. Il ne rendra compte que des unités qu'il a compilées. La commande "compile" ne compilera que les fichiers modifiés. Pour forcer une recompilation de toutes les unités utilisées par votre projet, utilisez plutôt la commande Build.

Les versions ultérieures attribuer une touche de raccourci (Maj + F9) pour la commande "Build".

Pour obtenir ce raccourci clavier dans Delphi 6, install this utility, que je l'ai utilisé pendant un certain temps avec succès sur Delphi 5.

+0

Faire une compilation complète donne exactement les mêmes résultats qu'une compilation. –

+0

Que se passe-t-il si vous supprimez manuellement tous les fichiers .DCU, puis effectuez une génération complète? – JosephStyons

+0

Toujours le même résultat, j'en ai peur. –

2

Si vous utilisez dcc32.exe, tous les avertissements seront affichés, toujours. (Ceci est une autre raison pour laquelle j'utilise des scripts de construction pour tous mes projets.)

+1

Ce n'est pas tout à fait vrai, seulement lorsque le commutateur -B est donné à dcc32, ce qui équivaut à faire une compilation complète dans l'EDI. Sans ce changement, dcc32 par défaut fait aussi des builds incrémentaux. Et les avertissements ne seront affichés que pour les unités compilées, évidemment. – mghie

+1

Vous avez raison, -B est obligatoire. Pour certains projets, je commence par copier les sources vers une structure de répertoire cible vide, seulement dans ce cas -B n'est pas nécessaire. – mjn

0

J'utilise toujours D6 pour certains projets et si je fais un build complet, alors tous les conseils et les avertissements sont affichés/ré-affichés. Pour la vérification de la syntaxe ou la compilation, seuls les messages de l'unité modifiée sont affichés.

Vous avez quelque chose d'autre tort ou endommagé quelque part. Essayez de supprimer le fichier .dsm du projet et les fichiers .dof (ils seront reconstruits). Le fichier .dof contient les indicateurs warnings et hints.

+0

Pas de chance d'avoir régénéré le DOF. Je ne trouve aucun fichier .dsm dans mon projet. –

3

J'ai eu le même problème et finalement j'ai trouvé la solution ... Rechercher des chaînes $ WARNINGS OFF et $ HINTS OFF, et pas seulement des fichiers * .pas mais de tous les fichiers. J'ai eu cette idée étrange dans un tiers fichier .inc:

{$ IFDEF DEBUG} {$ MISES EN GARDE SUR} {$ ON} TRUCS {$ else} {$ AVERTISSEMENTS OFF} { HINTS $ OFF } {$ ENDIF}

+0

Je voudrais essayer d'éviter les futurs composants de toute personne qui a fait quelque chose comme ça. –

Questions connexes