2013-03-28 18 views
6

मैं अलग जावास्क्रिप्ट-के टुकड़े (कई हजारों) के कुछ बड़े सेट है मान्य, और उनमें से कुछ वाक्य रचना में कुछ बेवकूफ त्रुटियों (unmatching ब्रेसिज़/उद्धरण, जावास्क्रिप्ट के अंदर एचटीएमएल, चर में लेखन की तरह है नाम नहीं)।सरल तरीका जाँच करने के लिए/जावास्क्रिप्ट वाक्य रचना

मुझे जेएस सिंटैक्स की जांच करने के लिए एक आसान तरीका चाहिए। मैंने जेएसलिंट की कोशिश की है लेकिन यह शैली, परिवर्तनीय परिभाषाओं के तरीके आदि के बारे में बहुत सी चेतावनियां भेजती है (भले ही मैं सभी झंडे बंद कर दूं)। मुझे शैली की समस्याओं को खोजने की आवश्यकता नहीं है, या जावास्क्रिप्ट गुणवत्ता में सुधार करने की आवश्यकता नहीं है, मुझे बस स्पष्ट वाक्यविन्यास त्रुटियों को खोजने की आवश्यकता है। बेशक मैं इसे ब्राउज़र/ब्राउज़र कंसोल में आसानी से देख सकता हूं, लेकिन मुझे इसे स्वचालित रूप से करने की आवश्यकता है क्योंकि उस स्निपेट की संख्या बड़ी है।

जोड़ें:
JSLint/JSHint (यानी कुछ संभावित समस्या है) लाइनों है कि 'सुंदरता' लेकिन काम नहीं कर रहे हैं में समस्याओं का एक बहुत कुछ जानकारी दी है, और असली समस्याओं को नहीं देख सकता, जहां सामान्य कंपाइलर सिंटैक्स त्रुटि की रिपोर्ट करेगा और निष्पादन रोक देगा। उदाहरण के लिए, उस कोड को जेएसलिंट करने का प्रयास करें, जिसमें लाइन 4 (बेजोड़ उद्धरण), लाइन 6 (कॉमा आवश्यक), और लाइन 9 (अप्रत्याशित < स्क्रिप्ट >) पर सिंटैक्स त्रुटियां हैं।

document.write('something'); 
a = 0; 
if (window.location == 'http://google.com') a = 1; 
document.write("aaa='andh"+a+"eded"'); 
a = { 
    something: ['a'] 
    something2: ['a'] 
}; 
<script> 
a = 1; 
+2

इस http कोशिश: //www.javascriptlint।कॉम/ –

+0

हम्म ... धन्यवाद, मैं कोशिश करूंगा। मैंने सोचा कि यह जेएसलिंट का कुछ क्लोन है, लेकिन यह अलग-अलग काम करता है। – mvf

उत्तर

1

मैंने पाया कि Spidermonkey यह क्रियान्वित करने के बिना स्क्रिप्ट संकलन करने की क्षमता है, और अगर संकलन में विफल रहा है - यह त्रुटि प्रिंट करता है।

तो मैं सिर्फ Spidermonkey

sub checkjs { 
    my $js = shift; 
    my ($js_fh, $js_tmpfile) = File::Temp::tempfile('XXXXXXXXXXXX', EXLOCK => 0, UNLINK => 1, TMPDIR => 1); 
    $| = 1; 
    print $js_fh $js; 
    close $js_fh; 
    return qx(js -C -f $js_tmpfile 2>&1); 
} 

के लिए छोटा सा आवरण बनाया और javascriptlint.com भी मेरे मामले में बहुत अच्छा संबंधित है। (@rajeshkakawat के लिए धन्यवाद)।

+0

मुझे लगता है कि समस्या यह है कि वह इसमें दिलचस्पी नहीं लेता है कि यह संकलित करता है, जरूरी है (स्पाइडरमोन्की [अर्ध-कॉलन डालें] (http://inimino.org/~inimino/blog/javascript_semicolons), उदाहरण के लिए? और निश्चित रूप से यह नहीं करता है आपको vars घोषित करने की आवश्यकता नहीं है, है ना?), लेकिन कुछ तार्किक-हालांकि-संकलन त्रुटियों (जैसे var name typos) खोजने में रुचि है, कि JSLint पकड़ने में विशेष रूप से अच्छा है। – ruffin

+0

जेएसलिंट सिंटैक्स जांच के लिए अच्छा नहीं है, यह कुछ छोटी समस्याओं की रिपोर्ट करता है, लेकिन वास्तव में खराब और खतरनाक चीजें नहीं दिखता है। इसे आज़माएं: document.write ('something'); ए = 0; अगर (window.location == 'http://google.com') a = 1; document.write ("aaa = 'andh" + a + "eded"'); ए = { कुछ: ['ए'] कुछ 2: ['ए'] };

2

आप JSHint की कोशिश कर सकते हैं, जो कम वर्बोज़ है।

+1

जेएसलिंट के समान दिखता है। – mvf

-1

सिमेंटिक डिजाइन '(मेरी कंपनी) जावास्क्रिप्ट फ़ॉर्मेटर जे एस फ़ाइलों को पढ़ने और उन्हें विभिन्न प्रारूपों। आप स्वरूपण भाग नहीं चाहते हैं।

फ़ाइलों स्वरूपित जाएगा पढ़ने के लिए, यह एक पूर्ण जावास्क्रिप्ट पार्सर है, जो एक पूरा वाक्य रचना की जांच (यहां तक ​​कि नियमित अभिव्यक्ति के अंदर) करता है उपयोग करता है। यदि आप इसे चलाते हैं और स्वरूपित परिणाम को अनदेखा करते हैं, तो आपको सिंटैक्स चेकर मिल जाता है।

आप इसे फ़ाइलों की बड़ी सूची दे सकते हैं और यह उन सभी को स्वरूपित होगा। आप इसका उपयोग अपने बड़े सेट को बैच-चेक करने के लिए कर सकते हैं। (यदि कोई वाक्यविन्यास त्रुटियां हैं, तो यह एक खोल में एक nonzero त्रुटि स्थिति देता है)।

+0

1) कहना भूल गया। प्लेटफार्म लिनक्स है, फ्रीवेयर उपकरण पसंदीदा। 2) आपकी साइट सोचती है कि केवल एक मंच मौजूद है, और यह पता लगाना मुश्किल है कि विंडोज – mvf

+0

पर आपके नरम रन 1. उन आवश्यकताओं के उत्तर देने में कठिनाई है जिन्हें आपने प्रारंभ में प्रदान नहीं किया था। 2) इतना कठिन नहीं, खरीद पेज लिंक देखें। 3) लिनक्स पर शराब के तहत चल रहे सॉफ्टवेयर पर चर्चा करता है, जो काफी अच्छी तरह से काम करता है। –

0

यदि आपके पास JSLint त्रुटियों की विस्तृत सूची है तो कैप्चर करना चाहते हैं तो बहुत सारे विकल्प हैं।

JSLint के कोड वास्तव में काफी अच्छा और काफी समझने में आसान (मैं यह सोचते कर रहा हूँ आप पहले से ही जावास्क्रिप्ट काफी अच्छी तरह से अपने प्रश्न से जानते हैं) है। आप केवल यह जांचने के लिए हैक कर सकते हैं कि आप क्या चाहते हैं और जारी रखें कि इससे कितनी त्रुटियां मिलती हैं।

तुम भी कुछ जल्दी Node.js में JSLint उपयोग करने के लिए हर फ़ाइल/टुकड़ा जल्दी और उत्पादन केवल उन त्रुटियों को आप के बारे में परवाह जाँच करने के लिए के रूप में है लिख सकते हैं।

+0

प्रारंभिक पोस्ट में मेरा ऐड देखें। – mvf

1

शायद ज़रुरत पड़े किसी को अब भी है, तो आप Esprima की कोशिश कर सकते लग रही है

यह केवल वाक्य रचना, और कुछ नहीं की जाँच करता है।

संबंधित मुद्दे