8
votes

Resharper met en garde contre les méthodes inutilisées appelées par Unity3d

Je viens de commencer à utiliser Reshaper aujourd'hui et d'obtenir beaucoup d'avertissements sur les méthodes inutilisées fournies par Unity3D, comme éveillé (), start () et update () Etc. Ceux-ci sont appelés par Unity3d avec réflexion, Resharper ne peut pas le savoir et les avertit donc d'eux.
Y a-t-il un meilleur moyen de supprimer ceux-ci, puis simplement désactiver le tout "type ou méthode n'est jamais utilisé" AVERTISSEMENT ou ajout de l'attribut [d'occasion] à tout?


1 commentaires

Non pas que je sache, je pense que vous avez énuméré les deux solutions.


3 Réponses :


4
votes

comme @blueraja Commentaires - Vous avez à peu près répertorié toutes les solutions possibles. La meilleure solution consiste à utiliser en effet l'attribut [d'occasion] , qui fait partie des annotations de Resharper. Cependant, au lieu de l'appliquer dans le code pour vos types , il serait préférable d'annoter les types de base (je suppose monobehavior ? Je suis désolé, je ne connais pas l'API UNITY3D). De cette façon, chaque type que vous mettez en œuvre qui dérive de ceux-ci, héritera automatiquement le [d'occasion] attribut.

La manière la mieux et non intrusive que cela pourrait être fait est de Annotations externes - Même chose que les annotations de code, mais applicables à l'extérieur via XML.

Il y a 3 choix ici: soit vous le faites vous-même (jetez un coup d'œil au répertoire externealannotations, situé soit à

% localAppData% \ jetbrains \ resharper \ Vany \ packages \ resharper.externalannotations ...

Depuis Resharper 8.2, ou

C: \ Fichiers de programme (x86) \ jetbrains \ resharper \ vx.x \ exsternattations

dans les versions précédentes)

Vous pouvez trouver des exemples d'annotations externes XMLS et de créer un vous-même, après les mêmes conventions de dénomination. Pour vous aider avec la copie de noms de méthode dans le bon format, vous pouvez utiliser Copier XML-doc ID dans l'option Clipboard dans le menu Edition de Resharper.

De cette façon, vous pouvez annoter les classes de base UNITY3D, puis distribuer ce XML comme une extension de Resharper pour les bénéfices des autres.

(Les deux autres choses que vous pouvez faire est de convaincre Unity3d de faire cela eux-mêmes ou d'ouvrir un problème sur le suivi de bugs de Resharper, et peut-être que Jetbrains le fera. Mais votre meilleur pari est de le faire vous-même).

J'espère que cela aide.


3 commentaires

Thx, je pense que je vais essayer ces annotations un peu.


Je ne pense pas que cela fonctionnera réellement car les fonctions de monobéhaviennes ne sont pas héritées dans l'API d'unité, elles sont impliquées, elles n'existent donc pas dans la bibliothèque pour attacher des annotations à.


En fait, vous avez probablement plus de chance de demander à Microsoft d'ajouter cette fonctionnalité car UNITY3D ne prend pas en charge VS hors de la boîte. Vous devez installer un plugin appartenant à Microsoft pour obtenir le support.



1
votes

Je les rends habituellement publics, des inconvénients étant qu'ils apparaissent ensuite dans la liste des méthodes que vous pouvez appeler d'autres scripts. Les méthodes apparaîtront probablement encore plus gris (comme non appelé nulle part de votre solution), mais au moins, vous ne recevrez plus les avertissements.

La chose d'annotations ne fonctionne jamais pour moi, c'est donc ma solution de contournement.


1 commentaires

Les faire protégé fonctionne également et n'ajoute pas la fonction à la liste des suggestions.