19 votes

Quel est l'état actuel de la vérification statique des types en JavaScript ?

Je sais que le Google Closure Compiler fait de la vérification de type, mais existe-t-il d'autres solutions, de préférence moins étroitement liées à une bibliothèque et à un optimiseur ?

Si ce n'est pas le cas, existe-t-il un moyen de faire en sorte que le Google Closure Compiler sólo faire de l'analyse statique ?

(Par analyse statique, j'entends ici des choses telles que la définition de types pour les arguments et ainsi de suite, que je peux faire passer par quelque chose qui m'avertit si je fais une faute de frappe ou si je passe le mauvais type).

2voto

gsnedders Points 2693

Il y a Docteur JS qui est un projet Mozilla qui fait principalement (d'après ce que j'ai compris, du moins) de la vérification de type pour JS.

0voto

Chris Moschini Points 7278

AJAX Minifier de Microsoft est un peu plus détendu en ce qui concerne la quantité de préparation que vous devez apporter à un fichier JS pour obtenir des résultats utiles. Vous pouvez l'exécuter avec les valeurs par défaut et obtenir un fichier hautement minifié qui fonctionne toujours avec le code extérieur : http://ajaxmin.codeplex.com/

Cependant, Closure Compiler et Ajax Minifier ne peuvent effectuer qu'une analyse statique très limitée, au-delà de l'analyse de base, en raison de la manière dont Javascript est conçu. L'accès à une propriété non déclarée peut juste être vérifié pour undefined, l'assignation d'une variable non déclarée signifie simplement la déclarer dans la portée globale, l'assignation d'un objet à une variable qui contenait un nombre est légale, etc. Il y a beaucoup de choses légales en JS que votre langage habituel (Java, C#) considère comme hors limites, donc sans déclarer les types, les limites et les attentes pour un compilateur spécifique, vous êtes malheureusement limité dans les erreurs que vous pouvez éviter.

Je serais un peu plus intéressé par quelque chose qui peut se transformer entre les 2 grands (MS et Google). Ce serait utile pour la prise en charge des IDE, pour tester la taille du code avec des optimisations avancées, etc.

0voto

wesen Points 440

J'ai été assez satisfait de l'éditeur intellij idea / webstorms, qui analyse jsdoc et fait sa propre analyse statique pour signaler les erreurs de sécurité de type potentielles ou réelles. Il s'est avéré très utile, bien qu'un peu de travail ait été nécessaire pour faire fonctionner l'héritage avec certains frameworks communs. En raison de la multitude d'approches possibles avec l'héritage prototypique javascript, le compilateur a besoin d'un peu plus d'aide que pour d'autres langages.

C'est un outil commercial, mais je peux l'utiliser pour des projets java, php, javascript, python et ruby, le tout avec des outils d'analyse statique et d'aide à la refonte assez décents. J'avais l'habitude d'utiliser emacs et de lancer des processus node.js pour jshint et le compilateur closure, mais c'est beaucoup moins fragile.

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