זוהי הפקודה luacheck שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
luacheck - luacheck תיעוד
תוכן:
רשימה OF אזהרות
אזהרות המיוצרות על ידי Luacheck מסווגות באמצעות קודי אזהרה בני שלוש ספרות. אַזהָרָה
ניתן להציג קודים בפלט CLI באמצעות --קודים אפשרות CLI או קודים אפשרות config.
לשגיאות יש גם קודים שמתחילים באפס.
┌─────┬──────────────────────────────────
│קוד │ תיאור │
├─────┼──────────────────────────────────
│011 │ שגיאת תחביר. │
├─────┼──────────────────────────────────
│021 │ אפשרות מוטבעת לא חוקית. │
├─────┼──────────────────────────────────
│022 │ דחיפה מוטבעת מוגבהת │
│ │ הנחיה. │
├─────┼──────────────────────────────────
│023 │ הנחיית פופ מוטבעת משודרגת. │
├─────┼──────────────────────────────────
│111 │ הגדרת גלובלית לא מוגדרת │
│ │ משתנה. │
├─────┼──────────────────────────────────
│112 │ שינוי גלובלי לא מוגדר │
│ │ משתנה. │
├─────┼──────────────────────────────────
│113 │ גישה לגלובל לא מוגדר │
│ │ משתנה. │
├─────┼──────────────────────────────────
│121 │ הגדרת גלובלי לקריאה בלבד │
│ │ משתנה. │
├─────┼──────────────────────────────────
│122 │ שינוי גלובלי לקריאה בלבד │
│ │ משתנה. │
├─────┼──────────────────────────────────
│131 │ לא בשימוש גלובלי מוגדר באופן מרומז │
│ │ משתנה. │
├─────┼──────────────────────────────────
│211 │ משתנה מקומי לא בשימוש. │
├─────┼──────────────────────────────────
│212 │ ארגומנט לא בשימוש. │
├─────┼──────────────────────────────────
│213 │ משתנה לולאה לא בשימוש. │
├─────┼──────────────────────────────────
│221 │ יש גישה למשתנה מקומי אבל │
│ │ אף פעם לא מוגדר. │
├─────┼──────────────────────────────────
│231 │ משתנה מקומי מוגדר אך לעולם לא │
│ │ ניגש. │
├─────┼──────────────────────────────────
│232 │ ארגומנט מוגדר אך לעולם לא │
│ │ ניגש. │
├─────┼──────────────────────────────────
│233 │ משתנה לולאה מוגדר אך לעולם לא │
│ │ ניגש. │
├─────┼──────────────────────────────────
│311 │ ערך שהוקצה למקומון │
המשתנה │ │ אינו בשימוש. │
└─────┴───────────────────────────────────
│312 │ ערך של ארגומנט אינו בשימוש. │
├─────┼──────────────────────────────────
│313 │ הערך של משתנה לולאה הוא │
│ │ לא בשימוש. │
├─────┼──────────────────────────────────
│321 │ גישה מקומית לא מאותחל │
│ │ משתנה. │
├─────┼──────────────────────────────────
│411 │ הגדרה מחדש של משתנה מקומי. │
├─────┼──────────────────────────────────
│412 │ הגדרה מחדש של ארגומנט. │
├─────┼──────────────────────────────────
│413 │ הגדרה מחדש של משתנה לולאה. │
├─────┼──────────────────────────────────
│421 │ הצללה של משתנה מקומי. │
├─────┼──────────────────────────────────
│422 │ הצללת טיעון. │
├─────┼──────────────────────────────────
│423 │ הצללת משתנה לולאה. │
├─────┼──────────────────────────────────
│431 │ הצללה של ערך גבוה יותר. │
├─────┼──────────────────────────────────
│432 │ הצללת ארגומנט של ערך גבוה יותר. │
├─────┼──────────────────────────────────
│433 │ הצללת לולאה עם ערך גבוה │
│ │ משתנה. │
├─────┼──────────────────────────────────
│511 │ קוד בלתי ניתן להשגה. │
├─────┼──────────────────────────────────
│512 │ ניתן לבצע לולאה לכל היותר │
│ │ פעם אחת. │
├─────┼──────────────────────────────────
│521 │ תווית לא בשימוש. │
├─────┼──────────────────────────────────
│531 │ צד שמאל של מטלה │
│ │ קצר מדי. │
├─────┼──────────────────────────────────
│532 │ צד שמאל של מטלה │
│ │ ארוך מדי. │
├─────┼──────────────────────────────────
│541 │ ריק do סוף לַחסוֹם. │
├─────┼──────────────────────────────────
│542 │ ריק if ענף. │
├─────┼──────────────────────────────────
│551 │ הצהרה ריקה. │
└─────┴───────────────────────────────────
גלוֹבָּלִי משתנים
עבור כל קובץ, Luacheck בונה רשימה של גלובלים מוגדרים שניתן להשתמש בהם שם. כברירת מחדל
רק גלובלים מהספרייה הסטנדרטית Lua מוגדרים; ניתן להוסיף גלובלים מותאמים אישית באמצעות
--גלובלים אפשרות CLI או גלובל אפשרות תצורה, וגרסה של הספרייה הסטנדרטית יכולה להיות
נבחר באמצעות --std אפשרות CLI או std אפשרות תצורה. כאשר מוגדר גלובלי לא מוגדר,
עבר מוטציה או גישה אליו, Luacheck מפיק אזהרה.
לקריאה בלבד גלובל
כברירת מחדל, כל הגלובליות הסטנדרטיות למעט _G ו חבילה מסומנים כקריאה בלבד, כך ש
הגדרה או מוטציה שלהם מייצרת אזהרה. ניתן להוסיף גלובליות מותאמות אישית לקריאה בלבד באמצעות
--read-globals אפשרות CLI או read_globals אפשרות config.
באופן מרומז מוגדר גלובל
ניתן להגדיר את Luacheck כך שיחשבו על גלובלים שהוקצו בתנאים מסוימים
מוגדר באופן מרומז. מתי -d/--allow_defined אפשרות CLI או לאפשר_מוגדר אפשרות התצורה היא
בשימוש, כל ההקצאות לגלובלים מגדירות אותן; מתי -t/--allow_defined_top אפשרות CLI או
allow_defined_top נעשה שימוש באפשרות config, הקצאות לגלובלים בפונקציה ברמה העליונה
scope (הידוע גם כ-main chunk) מגדיר אותם. אזהרה מופקת כאשר באופן מרומז
הגלובלי מוגדר לא נגיש בשום מקום.
מודולים
ניתן לסמן קבצים כמודולים באמצעות -m/--מודול אפשרות CLI או מודול אפשרות config ל-
לדמות סמנטיקה של המותרות מודול פוּנקצִיָה. גלובלים המוגדרים במרומז בתוך א
המודול נחשב לחלק מהממשק שלו, אינם נראים בחוץ ואינם מדווחים
כבלתי בשימוש. הקצאות לגלובליות אחרות אינן מותרות, גם לא לאלו מוגדרות.
לא בשימוש משתנים ו ערכים
Luacheck מייצר אזהרות עבור כל המשתנים המקומיים שאינם בשימוש מלבד אחד בשם _. גם זה
מזהה משתנים שמוגדרים אך מעולם לא ניגשו אליהם או שאליהם ניגשו אך לעולם לא נקבעו.
לא בשימוש ערכים ו לא מאותחל משתנים
עבור כל ערך המוקצה למשתנה מקומי, Luacheck מחשב את קבוצת הביטויים היכן שהוא
יכול לשמש. נוצרות אזהרות עבור ערכים שאינם בשימוש (כאשר לא ניתן להשתמש בערך
בכל מקום) ולגישה למשתנים לא מאותחלים (כאשר אין ערכים שיכולים להגיע ל-an
ביטוי). למשל בערך הקטע הבא שהוקצה ל Foo בקו 1 אינו בשימוש, ו
משתנה בָּר לא אתחול בשורה 9:
foo מקומי = expr1()
בר מקומי
if condition() אז
foo = expr2()
bar = expr3()
אחר
foo = expr4()
print(bar)
סוף
חזור פו, בר
המשני ערכים ו משתנים
ערך לא בשימוש שהוקצה למשתנה מקומי הוא משני אם המקור שלו הוא הפריט האחרון שבו
נעשה שימוש ב-RHS של ההקצאה, ובערך אחר מאותו פריט. ערכים משניים
מופיעים בדרך כלל כאשר תוצאת קריאת פונקציה מוכנסת למקומיים, ורק לחלקם
משמשים מאוחר יותר. לדוגמה, כאן הערך המוקצה ל b הוא משני, ערך מוקצה ל c is
בשימוש, והערך שהוקצה לו a הוא פשוט לא בשימוש:
מקומי a, b, c = f(), g()
לחזור ג
משתנה הוא משני אם כל הערכים שהוקצו לו הם משניים. בקטע למעלה,
b הוא משתנה משני.
ניתן להסיר אזהרות הקשורות לערכים ומשתנים שאינם בשימוש באמצעות
-s/--אין-משניים-בלתי בשימוש אפשרות CLI או unused_secondaries אפשרות config.
הַצלָלָה הצהרות
Luacheck מזהה הצהרות של משתנים מקומיים שמצללים הצהרות קודמות, אלא אם כן
המשתנה נקרא בשם _. אם ההצהרה הקודמת היא באותו היקף כמו ההצהרה החדשה,
זה נקרא הגדרה מחדש.
שים לב שכן לֹא הכרחי כדי להגדיר משתנה מקומי חדש בעת החלפת ארגומנט:
פונקציה מקומית f(x)
מקומי x = x או "ברירת מחדל" -- רע
סוף
פונקציה מקומית f(x)
x = x או "ברירת מחדל" -- טוב
סוף
שליטה תזרים ו נתונים תזרים בעיות
הבעיות הבאות של זרימת הבקרה וזרימת הנתונים מזוהות:
· קוד ולולאות בלתי ניתנות להשגה שניתן לבצע לכל היותר פעם אחת (למשל עקב an
הפסקה ללא תנאי);
· תוויות לא בשימוש;
· מטלות לא מאוזנות;
· בלוקים ריקים.
· הצהרות ריקות (נקודה-פסיק ללא הצהרות קודמות).
פקודה קו ממשק
לואצ'ק התוכנית מקבלת קבצים, ספריות ו מפרט סלעים כטיעונים.
· בהינתן קובץ, לואצ'ק יבדוק את זה.
· נתון -, לואצ'ק יבדוק stdin.
· בהינתן ספרייה, לואצ'ק יבדוק את כל הקבצים בתוכו, בוחר רק קבצים עם
.lua הרחבה אלא אם כן --include-files נעשה שימוש באופציה. תכונה זו דורשת
LuaFileSystem (מותקן אוטומטית אם נעשה שימוש ב-LuaRocks להתקנת Luacheck).
· נתון מפרט סלע (קובץ עם .rockspec סיומת), לואצ'ק יבדוק את כל הקבצים עם
.lua הרחבה המוזכרת במפרט הסלע ב build.install.lua, build.install.bin ו
לבנות.מודולים שולחנות.
התפוקה של לואצ'ק מורכב מדוחות נפרדים לכל קובץ שנבדק ומסתיים ב-a
סיכום:
$ luacheck src
בדיקת אזהרות src/bad_code.lua 5
src/bad_code.lua:3:16: עוזר משתנה שאינו בשימוש
src/bad_code.lua:3:23: ארגומנט אורך משתנה שאינו בשימוש
src/bad_code.lua:7:10: הגדרת חיבוק משתנה גלובלי לא סטנדרטי
src/bad_code.lua:8:10: משתנה opt הוגדר בעבר כארגומנט בשורה 7
src/bad_code.lua:9:11: גישה ל-hepler משתנה לא מוגדר
בודק את src/good_code.lua בסדר
בודק שגיאה 1 של src/python_code.lua
src/python_code.lua:1:6: צפוי '=' ליד '__future__'
בודק אזהרות src/unused_code.lua 9
src/unused_code.lua:3:18: ארגומנט לא בשימוש baz
src/unused_code.lua:4:8: משתנה לולאה לא בשימוש i
src/unused_code.lua:5:13: משתנה לא בשימוש ש
src/unused_code.lua:7:11: משתנה לולאה לא בשימוש a
src/unused_code.lua:7:14: משתנה לולאה לא בשימוש ב
src/unused_code.lua:7:17: משתנה לולאה לא בשימוש c
src/unused_code.lua:13:7: הערך שהוקצה למשתנה x אינו בשימוש
src/unused_code.lua:14:1: הערך שהוקצה למשתנה x אינו בשימוש
src/unused_code.lua:22:1: הערך שהוקצה למשתנה z אינו בשימוש
סך הכל: 14 אזהרות / שגיאה אחת ב-1 קבצים
לואצ'ק יוצא עם 0 אם לא התרחשו אזהרות או שגיאות ועם מספר חיובי
אחרת.
פיקוד קו אפשרויות
אפשר לשלב אפשרויות קצרות שלא לוקחות טיעון לאחת, כך -qqu is
שווה ערך ל -q -q -u. לאפשרויות ארוכות, שניהם --אוֹפְּצִיָה ערך or --אופציה=ערך יכול להיות
מְשׁוּמָשׁ.
ניתן להשתמש באפשרויות שלוקחות מספר ארגומנטים מספר פעמים; --להתעלם Foo --להתעלם בָּר is
שווה ערך ל --להתעלם Foo בָּר.
שים לב שאפשרויות שעשויות לקחת כמה ארגומנטים, כגון --גלובלים, אסור להשתמש
מיד לפני טיעוני עמדה; נָתוּן --גלובלים Foo בָּר file.lua, לואצ'ק יצטרך
שקול הכל Foo, בָּר ו file.lua גלובלי ולאחר מכן פאניקה מכיוון שלא נותרו שמות קבצים.
┌─────────────────────────────────┬─────────────── ───────────────────┐
│אפשרות │ משמעות │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-g | --לא גלובלי │ סינון אזהרות הקשורות ל│
│ │ משתנים גלובליים. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-u | --לא בשימוש │ סינון אזהרות הקשורות ל│
│ │ משתנים וערכים שאינם בשימוש. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-r | --לא מוגדר מחדש │ סינון אזהרות הקשורות ל│
│ │ משתנים מוגדרים מחדש. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-a | --no-unused-args │ סינון אזהרות הקשורות ל│
│ │ ארגומנטים לולאה שאינם בשימוש │
│ │ משתנים. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-s | --אין-משניים-בלתי בשימוש │ סינון אזהרות הקשורות ל│
│ │ משתנים שאינם בשימוש שנקבעו יחד │
│ │ עם משומשים. │
│ │ │
│ │ ראה ערכים משניים ומשתנים │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--אין עצמי │ סינון אזהרות הקשורות ל│
│ │ מרומז עצמי טַעֲנָה. │
└─────────────────────────────────┴─────────────── ───────────────────┘
│--std │ הגדר גלובלים סטנדרטיים. יכול │
│ │ תהיה אחד מ: │
│ │ │
│ │ · _G - גלובלים של הלואה │
│ │ מתורגמן לואצ'ק │
│ │ פועל על (ברירת מחדל); │
│ │ │
│ │ · lua51 - גלובלים של לואה │
│ │ 5.1; │
│ │ │
│ │ · lua52 - גלובלים של לואה │
│ │ 5.2; │
│ │ │
│ │ · lua52c - גלובלים של לואה │
│ │ 5.2 הידור עם │
│ │ LUA_COMPAT_ALL; │
│ │ │
│ │ · lua53 - גלובלים של לואה │
│ │ 5.3; │
│ │ │
│ │ · lua53c - גלובלים של לואה │
│ │ 5.3 הידור עם │
│ │ LUA_COMPAT_5_2; │
│ │ │
│ │ · לואג'יט - גלובלים של │
│ │ LuaJIT 2.0; │
│ │ │
│ │ · ngx_lua - גלובלים של │
│ │ Openresty │
│ │ lua-nginx-module עם │
│ │ LuaJIT 2.0; │
│ │ │
│ │ · דקות - צומת של │
│ │ גלובלים של Lua 5.1, Lua │
│ │ 5.2 ו- LuaJIT 2.0; │
│ │ │
│ │ · מקסימום - איחוד של גלובלים │
│ │ של Lua 5.1, Lua 5.2 ו-│
│ │ LuaJIT 2.0; │
│ │ │
│ │ · שבורה - נוספו גלובלים │
│ │ מאת Busted 2.0; │
│ │ │
│ │ · אף לא אחד - אין תקן │
│ │ גלובליים. │
│ │ │
│ │ ראה סטים of תֶקֶן │
│ │ גלובל │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--גלובלים [ ] ... │ הוסף גלובלים מותאמים אישית על גבי │
│ │ סטנדרטיים. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--read-globals [ ] ... │ הוסף גלובליות לקריאה בלבד. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--ניו-גלובלים [ ] ... │ הגדר גלובלים מותאמים אישית. מסיר │
│ │ גלובלים מותאמים אישית שנוספו בעבר. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--new-read-globals [ ] │ הגדר גלובליות לקריאה בלבד. מסיר │
│... │ גלובלים לקריאה בלבד נוספו │
│ │ בעבר. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-c | --compat │ שווה ערך ל --std מקסימום. │
└─────────────────────────────────┴─────────────── ───────────────────┘
│-d | --אפשר-מוגדר │ אפשר להגדיר גלובלים │
│ │ באופן מרומז על ידי הגדרתם. │
│ │ │
│ │ ראה גלובלים מוגדרים במרומז │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-t | --allow-defined-top │ אפשר להגדיר גלובלים │
│ │ באופן מרומז על ידי הגדרתם ב│
│ │ היקף הרמה העליונה. │
│ │ │
│ │ ראה גלובלים מוגדרים במרומז │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-m | --מודול │ הגבל את הנראות של מרומז │
│ │ הגדירו גלובלים לקבצים שלהם. │
│ │ │
│ │ ראה מודולים │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--להתעלם | -i [ ] │ סנן התאמת אזהרות │
│... │ דפוסים. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--לְאַפשֵׁר | -e [ ] │ אין לסנן אזהרות │
│... │ תבניות תואמות. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--רק | -o [ ] ... │ סינון אזהרות שאינן תואמות │
│ │ דפוסים. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--לא מוטבע │ השבת אפשרויות מוטבעות. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--config │ נתיב לתצורה מותאמת אישית │
│ │ קובץ (ברירת מחדל: .luacheckrc). │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--ללא תצורה │ אל תחפש מותאם אישית │
│ │ קובץ תצורה. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--שם קובץ │ השתמש בשם קובץ אחר בפלט, │
│ │ לבחירת תצורה │
│ │ עוקפים ולקובץ │
│ │ סינון. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--exclude-files [ ] │ אל תבדוק קבצים תואמים │
│... │ הדפוסים הגלובליים האלה. │
│ │ גלובס רקורסיבי כגון **/*.lua │
│ │ נתמכים. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--include-files [ ] │ אל תבדוק קבצים שאינם תואמים │
│... │ הדפוסים הגלובליים האלה. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--מטמון [ ] │ נתיב לקובץ מטמון. (ברירת מחדל: │
│ │ .luacheckcache). ראה מטמון │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--ללא מטמון │ אל תשתמש במטמון. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-j | --מקומות תעסוקה │ בדוק קבצים במקביל. │
│ │ דורש LuaLanes. │
└─────────────────────────────────┴─────────────── ───────────────────┘
│--פורמט │ השתמש בפורמט מותאם אישית. │
│ │ חייב להיות מודול │
│ │ שם או אחד מ: │
│ │ │
│ │ · TAP - בדוק כל דבר │
│ │ מעצב פרוטוקול; │
│ │ │
│ │ · JUnit - JUnit XML │
│ │ מעצב; │
│ │ │
│ │ · פשוט - פשוט │
│ │ אזהרה לכל שורה │
│ │ מעצב; │
│ │ │
│ │ · ברירת מחדל - סטנדרטי │
│ │ מעצב. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-q | --שֶׁקֶט │ דחק פלט דוח עבור קבצים │
│ │ ללא אזהרות. │
│ │ │
│ │ · -qq - דיכוי פלט │
│ │ של אזהרות. │
│ │ │
│ │ · -qqq - רק פלט │
│ │ סיכום. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--קודים │ הצג קודי אזהרה. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--טווחים │ הצג טווחי עמודות הקשורים │
│ │ לאזהרות. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│--בלי צבע │ אל תצבע את הפלט. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-v | --גִרְסָה │ הצג את הגרסה של Luacheck ושלו │
│ │ תלות ויציאה. │
├─────────────────────────────────┼─────────────── ───────────────────┤
│-h | - עזרה │ הצג עזרה וצא. │
└─────────────────────────────────┴─────────────── ───────────────────┘
דפוסי
אפשרויות CLI --להתעלם, --לְאַפשֵׁר ו --רק ואפשרויות התצורה המתאימות מאפשרות סינון
אזהרות באמצעות התאמת דפוסים בקודי אזהרה, שמות משתנים או שניהם. אם דפוס
מכיל לוכסן, החלק שלפני הקו תואם את קוד האזהרה והחלק שאחרי תואם
שם משתנה. אחרת, אם תבנית מכילה אות או קו תחתון, היא תואמת
שם משתנה. אחרת, הוא תואם לקוד אזהרה. לְמָשָׁל:
─────────┬────────────────┬────────
│דפוס │ התאמת אזהרות │
├────────┼───────────────────────────────────
│4.2 │ הצהרות הצללה של │
│ │ טיעונים או הגדרה מחדש שלהם. │
├────────┼───────────────────────────────────
│.*_ │ אזהרות הקשורות למשתנים │
│ │ עם _ סִיוֹמֶת. │
├────────┼───────────────────────────────────
│4.2/.*_ │ הצללות של │
│ │ טיעונים עם _ סיומת או │
│ │ להגדיר אותם מחדש. │
└────────┴────────────────────────────────
אלא אם כבר מעוגנים, תבניות התואמות לשמות משתנים מעוגנות בשני הצדדים ו
תבניות התואמות לקודי אזהרה מעוגנות בתחילתן. זה מאפשר לאדם
סנן אזהרות לפי קטגוריות (למשל --רק 1 מתמקד לואצ'ק על אזהרות הקשורות גלובליות).
סטים of תֶקֶן גלובל
אפשרות CLI --stds מאפשר שילוב של סטים מובנים שתוארו לעיל באמצעות +. לדוגמה,
--std מקסימום שווה --std=lua51+lua52+lua53. סימן פלוס מוביל מוסיף סטים חדשים
ברירת מחדל במקום להחליף אותו. לדוגמה, --std +נתקע מתאים לבדיקה
קבצי בדיקה המשתמשים busted מסגרת בדיקה. ניתן להגדיר קבוצות מותאמות אישית של גלובלים על ידי
משתנה גלובלי משתנה סטדס בתצורה. ראה custom_stds
מעצבים
אפשרות CLI --פורמט מאפשר בחירה בפורמט מותאם אישית עבור לואצ'ק תְפוּקָה. תחפושת
formatter הוא מודול Lua המחזיר פונקציה עם שלושה ארגומנטים: דוח כפי שהוחזר על ידי
לואצ'ק מודול (ראה דוח), מערך שמות קבצים וטבלת אפשרויות. אפשרויות מכילות
ערכים שהוקצו ל שֶׁקֶט, צֶבַע, להגביל, קודים, טווחים ו מעצב אפשרויות ב-CLI או
תצורה. פונקציית הפורמט חייבת להחזיר מחרוזת.
מטמון
אם LuaFileSystem זמין, Luacheck יכול לשמור תוצאות של בדיקת קבצים במטמון. בהמשך
בדיקות, רק קבצים שהשתנו מאז הבדיקה האחרונה ייבדקו מחדש, וישתפרו
זמן ריצה באופן משמעותי. שינוי אפשרויות (למשל הגדרת גלובלים נוספים) לא
לבטל את תוקף המטמון. ניתן להפעיל שמירה במטמון באמצעות --מטמון אפשרות או מטמון config
אוֹפְּצִיָה. באמצעות --מטמון ללא ויכוח או הגדרה מטמון אפשרות config ל- נָכוֹן סטים
.luacheckcache כקובץ המטמון. ציין זאת --מטמון יש להשתמש בכל פעם לואצ'ק is
לרוץ, לא בריצה הראשונה בלבד.
יציב ממשק ל עורך תוספים ו כלים
ממשק שורת הפקודה של Luacheck יכול להשתנות בין מהדורות קטנות. החל מ-0.11.0
גרסה, הממשק הבא מובטח לפחות עד גרסה 1.0.0, ואמור להיות
בשימוש על ידי כלים המשתמשים בפלט Luacheck, למשל תוספים של עורך.
· יש להפעיל את Luacheck מהספרייה המכילה את הקובץ המסומן.
· ניתן להעביר קובץ דרך stdin באמצעות - כארגומנט או באמצעות קובץ זמני. אמיתי
יש להעביר את שם הקובץ באמצעות --שם קובץ אוֹפְּצִיָה.
· יש להשתמש בפורמט רגיל. הוא מוציא בעיה אחת (אזהרה או שגיאה) בכל שורה.
· כדי לקבל מיקום שגיאה מדויק, --טווחים ניתן להשתמש באפשרות. כל שורה מתחילה במציאות
שם הקובץ (עבר באמצעות --שם קובץ), בא אחריו : : - :,
איפה הוא מספר קו שבו התרחשה הבעיה ו - is
טווח כולל של עמודות של אסימון הקשור לבעיה. המספור מתחיל מ-1. אם
--טווחים אינו בשימוש, עמודת סיום ומקף אינם מודפסים.
· כדי לקבל קודי אזהרה ושגיאה, --קודים ניתן להשתמש באפשרות. עבור כל שורה, מחרוזת משנה
בין סוגריים מכיל קוד נושא בן שלוש ספרות, עם קידומת E לשגיאות ו W
לאזהרות. היעדר תת-מחרוזת כזו מעיד על שגיאה קטלנית (למשל שגיאת קלט/פלט).
· שאר הקו הוא הודעת אזהרה.
אם רוצים תאימות עם גרסת Luacheck ישנה יותר, פלט של לואצ'ק - עזרה יכול להיות
נהג לקבל את הגרסה שלו. אם הוא מכיל מחרוזת 0. ., שם ישבתי
לפחות 11 ו תיקון הוא מספר כלשהו, יש להשתמש בממשק המתואר לעיל.
תְצוּרָה קובץ
לואצ'ק מנסה לטעון תצורה מ .luacheckrc הקובץ בספרייה הנוכחית. אם
לא נמצא, הוא יחפש אותו בספריית האב וכן הלאה, יעלה עד אליו
מגיע לשורש מערכת הקבצים. ניתן להגדיר נתיב לתצורה באמצעות --config אפשרות, ובמקרה זה
הוא ישמש במהלך טעינה רקורסיבית. ניתן לבטל את טעינת התצורה באמצעות --ללא תצורה
דגל.
Config הוא פשוט סקריפט Lua המבוצע על ידי לואצ'ק. זה עשוי להגדיר אפשרויות שונות על ידי
הקצאה לגלובלים או על ידי החזרת טבלה עם שמות אפשרויות כמקשים.
Config אפשרויות
┌───────────────────┬──────────────────────────┬── ───────────────────┐
│אפשרות │ סוג │ ערך ברירת מחדל │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│צֶבַע │ בוליאנית │ נָכוֹן │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│קודים │ בוליאנית │ שקר │
└───────────────────┴──────────────────────────┴── ───────────────────┘
│מעצב │ מחרוזת או פונקציה │ "בְּרִירַת מֶחדָל" │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│מטמון │ בוליאנית או מחרוזת │ שקר │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│משרות │ מספר שלם חיובי │ 1 │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│exclude_files │ מערך מחרוזות │ {} │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│include_files │ מערך מחרוזות │ (כלול את כל הקבצים) │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│גלוֹבָּלִי │ בוליאנית │ נָכוֹן │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│לא בשימוש │ בוליאנית │ נָכוֹן │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│מוגדר מחדש │ בוליאנית │ נָכוֹן │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│unused_args │ בוליאנית │ נָכוֹן │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│unused_secondaries │ בוליאנית │ נָכוֹן │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│עצמי │ בוליאנית │ נָכוֹן │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│std │ מחרוזת או סט של │ "_G" │
│ │ גלובלים סטנדרטיים │ │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│גלובל │ מערך מחרוזות │ {} │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│new_globals │ מערך מחרוזות │ (אין להחליף) │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│read_globals │ מערך מחרוזות │ {} │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│new_read_globals │ מערך מחרוזות │ (אין להחליף) │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│compat │ בוליאנית │ שקר │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│לאפשר_מוגדר │ בוליאנית │ שקר │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│allow_defined_top │ בוליאנית │ שקר │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│מודול │ בוליאנית │ שקר │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│להתעלם │ מערך תבניות (ראה │ {} │
│ │ דפוסים) │ │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│לאפשר │ מערך תבניות │ {} │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│רק │ מערך תבניות │ (לא לסנן) │
├───────────────────┼──────────────────────────┼── ───────────────────┤
│מוטבע │ בוליאנית │ נָכוֹן │
└───────────────────┴──────────────────────────┴── ───────────────────┘
דוגמה לתצורה שעושה לואצ'ק להבטיח שרק גלובלים מהנייד
נעשה שימוש בצומת של Lua 5.1, Lua 5.2, Lua 5.3 ו- LuaJIT 2.0, כמו גם משביתים
איתור ארגומנטים שאינם בשימוש:
std = "דקה"
התעלם = {"212"}
מותאם אישית סטים of גלובל
std האפשרות מאפשרת להגדיר סט סטנדרטי מותאם אישית של גלובלים באמצעות טבלה. בטבלה ההיא,
מפתחות מחרוזת הם גלובליים, והמחרוזת בחלק של המערך הם גלובליים לקריאה בלבד.
בנוסף, ניתן לתת שמות לקבוצות מותאמות אישית על ידי שינוי גלובלי סטדס מִשְׁתַנֶה. ל
לדוגמה, בעת שימוש LPEG הספרייה, הגיוני לגשת לפונקציות שלה בקצרה באמצעות
גלובליים. במקרה זה, התצורה הבאה מאפשרת הסרת תוצאות חיוביות שגויות הקשורות ל
גישה גלובלית בקלות:
stds.lpeg = דורש "lpeg"
lpeg מקומי = דורש "lpeg"
פונקציה מקומית parse1(...)
-- פונקציה זו משתמשת רק בפונקציות lpeg כגלובליות.
local _ENV = lpeg
-- luacheck: std lpeg
ספרה מקומית, רווח = R "09", S " "
- ...
סוף
פונקציה מקומית parse2(...)
-- פונקציה זו משתמשת בפונקציות lpeg כמו גם בגלובליות סטנדרטיות.
local _ENV = setmetatable({}, {__index = function(_, k) return _ENV[k] או lpeg[k] end})
-- luacheck: std +lpeg
ספרה מקומית, רווח = R "09", S " "
מספר מקומי = C(ספרה^1) / מספר טון
- ...
סוף
לכל קובץ ו לכל נתיב מבטל
הסביבה שבה לואצ'ק טוען התצורה מכילה גלובל מיוחד קבצים. כאשר
בודק קובץ , לואצ'ק יעקוף אפשרויות מהתצורה הראשית עם ערכים
החל מ- קבצים[ ] ו קבצים[ ], החלת ערכים עבור נתיבים קצרים יותר תחילה. ל
לדוגמה, התצורה הבאה מאפשרת מחדש זיהוי של ארגומנטים שאינם בשימוש רק עבור קבצים ב
src/dir, אבל לא בשביל src/dir/myfile.lua, ומאפשר שימוש busted גלובליים בפנים מפרט /:
std = "דקה"
התעלם = {"212"}
files["src/dir"] = {enable = {"212"}}
קבצים["src/dir/myfile.lua"] = {התעלם = {"212"}}
קבצים["spec"] = {std = "+busted"}
שים לב כי קבצים הטבלה תומכת באוטוביפיקציה, כך ש
files["myfile.lua"].ignore = {"212"}
ו
קבצים["myfile.lua"] = {התעלם = {"212"}}
שווים.
בשורה אפשרויות
Luacheck תומך בהגדרה של כמה אפשרויות ישירות בקבצים המסומנים באמצעות מוטבע
הערות תצורה. הערת תצורה מוטבעת מתחילה ב luacheck: תווית,
אולי אחרי קצת רווח לבן. גוף התגובה צריך להכיל פסיקים מופרדים
אפשרויות, כאשר הפקת אפשרות מורכבת מהשם שלה בתוספת ארגומנטים מופרדים ברווח. ה
האפשרויות הבאות נתמכות:
┌───────────────────┬───────────────────────────── ─────┐
│אפשרות │ מספר ארגומנטים │
├───────────────────┼───────────────────────────── ─────┤
│גלובלי │ 0 │
├───────────────────┼───────────────────────────── ─────┤
│לא בשימוש │ 0 │
├───────────────────┼───────────────────────────── ─────┤
│ מוגדר מחדש │ 0 │
├───────────────────┼───────────────────────────── ─────┤
│ארגים לא בשימוש │ 0 │
├───────────────────┼───────────────────────────── ─────┤
│משניים שאינם בשימוש │ 0 │
├───────────────────┼───────────────────────────── ─────┤
│עצמי │ 0 │
└───────────────────┴───────────────────────────── ─────┘
│compat │ 0 │
├───────────────────┼───────────────────────────── ─────┤
│מודול │ 0 │
├───────────────────┼───────────────────────────── ─────┤
│אפשר מוגדר │ 0 │
├───────────────────┼───────────────────────────── ─────┤
│אפשר העליון מוגדר │ 0 │
├───────────────────┼───────────────────────────── ─────┤
│std │ 1 │
├───────────────────┼───────────────────────────── ─────┤
│גלובלים │ 0+ │
├───────────────────┼───────────────────────────── ─────┤
│ גלובלים חדשים │ 0+ │
├───────────────────┼───────────────────────────── ─────┤
│קרא גלובלים │ 0+ │
├───────────────────┼───────────────────────────── ─────┤
│ גלובלים חדשים לקריאה │ 0+ │
├───────────────────┼───────────────────────────── ─────┤
│התעלם │ 0+ (ללא ארגומנטים הכל │
│ │ מתעלמים) │
├───────────────────┼───────────────────────────── ─────┤
│לאפשר │ 1+ │
├───────────────────┼───────────────────────────── ─────┤
│רק │ 1+ │
└───────────────────┴───────────────────────────── ─────┘
אפשר להתחיל עם אפשרויות שאינן לוקחות ארגומנטים לא להפוך את המשמעות שלהם. לְמָשָׁל
--luacheck: לא לא בשימוש טוען משבית אזהרות ארגומנטים שאינם בשימוש.
חלק מהקובץ המושפע מהאפשרות המוטבעת תלוי איפה הוא ממוקם. אם יש
קוד בשורה עם האפשרות, רק השורה הזו מושפעת; אחרת, הכל עד
סוף הסגירה הנוכחית הוא. בפרט, אפשרויות מוטבעות בחלק העליון של הקובץ
להשפיע על הכל:
-- luacheck: globals g1 g2, התעלם מ-foo
local foo = g1(g2) -- לא נפלטו אזהרות.
-- הפונקציה הבאה שאינה בשימוש אינה מדווחת.
פונקציה מקומית f() -- luacheck: התעלם
-- luacheck: globals g3
g3() -- אין אזהרה.
סוף
g3() -- אזהרה נפלטת כאפשרות המוטבעת המגדירה את הפונקציה g3 המושפעת רק f.
לשליטה דקיקה על שימוש בנראות של אפשרויות מוטבעות luacheck: לדחוף ו luacheck:
פופ הוראות:
-- luacheck: לדחוף להתעלם פו
foo() -- אין אזהרה.
-- luacheck: פופ
foo() -- אזהרה נפלטת.
ניתן להשבית לחלוטין אפשרויות מוטבעות באמצעות --לא מוטבע אפשרות CLI או מוטבע config
אוֹפְּצִיָה.
לואצ'ק מודול
השתמש מקומי לואצ'ק = לדרוש "לואצ'ק" לייבא לואצ'ק מודול. הוא מכיל את
הפונקציות הבאות:
· luacheck.get_report(source): בהינתן מחרוזת מקור, מחזירה נתוני ניתוח (טבלה).
· luacheck.process_reports(דוחות, אפשרויות): מערך תהליכים של דוחות ניתוח ו
מחיל אפשרויות. דוחות[i] שימושים אפשרויות, אפשרויות[i], אפשרויות[i][1], אפשרויות[i][2], ...
כאפשרויות, עוקפות אחת את השנייה בסדר הזה. טבלת אפשרויות היא טבלה עם שדות
בדומה לאפשרויות תצורה; לראות אפשרויות. דוחות ניתוח עם שדה קטלני מתעלמים.
תהליך_דוחות מחזיר דוח סופי, ראה להגיש תלונה פוּרמָט.
· luacheck.check_strings(sources, אפשרויות): בודק מערך מקורות באמצעות אפשרויות, מחזיר
דו"ח סופי. טבלאות עם שדה קטלני בתוך מקורות מערך מתעלם.
· luacheck.check_files(קבצים, אפשרויות): בודק מערך קבצים באמצעות אפשרויות, מחזיר סופי
להגיש תלונה. ניתן להעביר נקודות אחיזה של קבצים פתוחים במקום שמות קבצים, ובמקרה כזה הם יהיו
קרא עד EOF ונסגר.
· luacheck.get_message(issue): מחזירה הודעת מחרוזת עבור בעיה, ראה להגיש תלונה פוּרמָט.
luacheck._VERSION מכיל גרסת Luacheck כמחרוזת MAJOR.MINOR.PATCH פורמט.
שימוש לואצ'ק כפונקציה שקולה להתקשרות luacheck.check_files.
להגיש תלונה פוּרמָט
דוח סופי הוא מערך של דוחות קבצים בתוספת שדות אזהרות, שגיאות ו קטלני
המכיל את המספר הכולל של אזהרות, שגיאות ושגיאות קטלניות, בהתאם.
דוח קובץ הוא מערך של בעיות (אזהרות או שגיאות). אם אירעה שגיאה קטלנית בזמן
בדיקת קובץ, הדוח שלו יהיה קטלני שדה המכיל את סוג השגיאה.
בעיה היא טבלה עם שדה קוד מציין את סוגו (ראה אזהרות), ושדות קו,
סקירה ו end_column מצביע על מקור האזהרה. שם השדה עשוי להכיל שם
של משתנה קשור. לבעיות מסוגים מסוימים יכולים להיות גם שדות נוספים:
┌──────┬───────────────────────────────
│קודים │ שדות נוספים │
├──────┼───────────────────────────────────
│011 │ msg השדה מכיל שגיאת תחביר │
│ │ הודעה. │
├──────┼───────────────────────────────────
│111 │ מודול השדה מציין כי │
│ │ ההקצאה היא לא-מודול │
│ │ משתנה גלובלי. │
├──────┼───────────────────────────────────
│211 │ func השדה מציין שלא בשימוש │
משתנה │ │ הוא פונקציה. │
├──────┼───────────────────────────────────
│4.. │ prev_line ו prev_column שדות │
│ │ מכיל מיקום של │
│ │ הגדרה שהוחלפה. │
└──────┴───────────────────────────────────
שדות אחרים עשויים להיות קיימים מסיבות פנימיות.
זהו תיעוד עבור גרסת 0.13.0 של לואצ'ק, לינטר עבור לואה.
השתמש ב-luacheck באינטרנט באמצעות שירותי onworks.net