2011-07-12 26 views
19

Google Closure Compiler'ın yazım denetimi yaptığını biliyorum, ancak tercihen bir kütüphane ve iyileştirici ile sıkı sıkıya bağlı olmayan alternatifler var mı?JavaScript statik tip kontrolünün mevcut durumu nedir?

Eğer değilse, Google Closure Compiler sadece statik analiz yapmak için herhangi bir yolu var mı?

(burada statik analiz ederek, bu yüzden bu konuda ben bir yazım hatası yapmak veya yanlış türde geçirirseniz bana uyarıları vermek için bir şey çalıştırabilirim ve bağımsız değişkenler için türlerini tanımlayan gibi şeyler yani.)

+0

Sanırım buna ters yönde gidiyorsunuz. Yazım denetimi, derleyicinin derleme işleminin bir özelliğidir. Derleyici özellikleri üzerinde oldukça fazla olması nedeniyle, tek başına kullanılması amaçlanmayan derlemeyi kolaylaştırmak için var. Ancak, derleyiciyi kullanmak için Kapatma Kitaplığı'nı kullanmanız gerekmez. –

+0

Bunu biliyorum - bu yüzden alternatifler arıyorum. –

+0

Peki, istediğiniz şeyi yapabilen Kapanma-Linter adında bir şey var ... –

cevap

2

Doctor JS yok, temel olarak (en azından anladığım kadarıyla) JS için tip denetimi yapan bir Mozilla projesidir.

+0

Bu yararlı görünüyor, ancak görebildiğim kadarıyla doğrudan komut satırından çalıştırmanın bir yolu yok (örneğin bir derleme/test komut dosyasında kullanmak için). Böyle bir erişim yolu var mı? –

+0

Bunu, komut dosyalarından birinde denedim ve işe yaramadı - işe yaramadığını söyledi. Sonra çok kısa bir senaryo üzerinde denedim ve işe yaradı, bu yüzden daha büyük komut dosyaları üzerinde çalışıp çalışmadığını ya da hataları veya hataları varsa bunu bilmiyorum. – jfriend00

+0

[Github] 'da (https://github.com/mozilla/doctorjs) kullanılabilir, böylece yerel olarak yüklemeyi ve çalıştırmayı deneyebilirsiniz. –

0

Microsoft'un AJAX Minifier, yararlı bir sonuç elde etmek için bir JS dosyasına yapmanız gereken hazırlık miktarı hakkında biraz daha rahatlamış. Sen varsayılanlarla çalıştırmak ve hala dışarıda kodu ile çalışan bir çok minified dosyayı çıkabiliriz: http://ajaxmin.codeplex.com/

Fakat Kapatma Derleyici ve Ajax Minifier hem sadece çok nedeni JavaScript olduğunu nasıl temel tüylenme ötesinde statik analiz sınırlı yapabilirsiniz tasarlamıştır. Bildirilmemiş bir özelliğe erişim yalnızca tanımlanmamış bir değere bakabilir, beyan edilmemiş bir değişken atamak için yalnızca global kapsamda bildirmek, bir sayı içeren bir değişkene bir nesneyi hukuki olarak atamak vb. Atanabilir. JS'de yasal olan bir çok şey vardır. (Java, C#) sınırlarını dikkate almaz, bu nedenle belirli bir derleyici için türleri, sınırları ve beklentileri bildirmeden, ne yazık ki önleyebileceğiniz hatalarla sınırlı değilsiniz.

Büyük 2 (MS ve Google) arasında dönüşebilecek bir şeyle biraz daha ilgilenirim. IDE desteği, kod optimizasyonu, gelişmiş optimizasyonlar vb. Için yararlı olacaktır.

0

Jsdoc'u ayrıştıran ve potansiyel veya gerçek tip güvenliği için kendi statik analizini yapan intellij idea/webstorms editörü ile oldukça mutlu oldum. hatalar. Bazı ortak çerçevelerle çalışmak için miras almak için biraz iş gerekmesine rağmen, oldukça yararlı olduğu kanıtlanmıştır. Javascript prototypal kalıtımla mümkün olan tonlarca yaklaşım nedeniyle, derleyicinin diğer dillerden biraz daha fazla yardıma ihtiyacı vardır.

Bu ticari bir araç, ancak java, php, javascript, python ve yakut projeleri için kullanabiliyorum, hepsi oldukça iyi statik analiz ve refactoring yardımcıları ile. Ben jmint ve kapatma derleyicisi için emacs ve node.js süreçleri ile çok şey yapmak için kullanılan, ama bu çok daha az kırılgan.

İlgili konular