Ace: ๋ชจ๋“  ์˜ค๋ฅ˜/๊ฒฝ๊ณ ๋ฅผ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2011๋…„ 06์›” 23์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ajaxorg/ace

ํ…์ŠคํŠธ ์˜์—ญ ์™ผ์ชฝ์˜ ๋ฒ„ํผ ์˜์—ญ์— ์˜ค๋ฅ˜/๊ฒฝ๊ณ  ์•„์ด์ฝ˜์„ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ •๋ง ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชฉ๋ก์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“  ์˜ค๋ฅ˜/๊ฒฝ๊ณ  ๋ชจ์Œ์„ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ปค์„œ ์œ„์น˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ์ปฌ๋ ‰์…˜์— ํ–‰/์—ด ๋ฒˆํ˜ธ๊ฐ€ ํฌํ•จ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์›ํ•œ๋‹ค:

var ์˜ค๋ฅ˜ = editor.getSession().getErrors();
var (var i = 0; i < Errors.length; i ++)
{
var ์˜ค๋ฅ˜ = ์˜ค๋ฅ˜[i];
// Error.LineNumber
// ์˜ค๋ฅ˜.์—ด ๋ฒˆํ˜ธ
// ์˜ค๋ฅ˜.์„ค๋ช…
}

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ๋ชฉ์ ์„ ์œ„ํ•ด Cloud9์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. acebugs๋ผ๊ณ  ํ•˜๋ฉฐ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/ajaxorg/cloud9/blob/devel/client/ext/acebugs/acebugs.js

cloud9 ํ™•์žฅ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์—ฌ๋Ÿฌ๋ถ„์˜ ๋…ธ๋ ฅ์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ž…๋‹ˆ๋‹ค.

AceBugs in Cloud9

์ตœ์ƒ์˜,

๋งคํŠธ

๋ชจ๋“  5 ๋Œ“๊ธ€

๋ฐ์ดํ„ฐ๋Š” annotations ์ด๋ฉฐ ๋‹ค์Œ ํ˜ธ์ถœ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

editor.getSession().getAnnotations()

๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

/**
 * Error:
 *  {
 *    row: 12,
 *    column: 2, //can be undefined
 *    text: "Missing argument",
 *    type: "error" // or "warning" or "info"
 *  }
 */

๋น ๋ฅธ ์‘๋‹ต ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! getAnnotations์— ๋Œ€ํ•ด ๋ฐ˜ํ™˜๋œ ๊ฐœ์ฒด์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”!

๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด๋Š” ๋‹จ์ˆœํžˆ ํ•ด์‹œ ํ•ด์‹œ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ž…๋‹ˆ๋‹ค.

this.$annotations = {};

๋”ฐ๋ผ์„œ $annotations ํ•ด์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
    {
        row: 12,
        column: 2, //can be undefined
        text: "Missing argument",
        type: "error" // or "warning" or "info"
    },
    {
        row: 32,
        text: "Missing semicolon",
        type: "warning"
    },
    // etc
}

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‘๋‹ต์„ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var annotations = editor.getSession().getAnnotations();

for (var anno in annotations) {
     // anno.row, anno.column, anno.text, anno.type
}

์ด ๋ชฉ์ ์„ ์œ„ํ•ด Cloud9์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. acebugs๋ผ๊ณ  ํ•˜๋ฉฐ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/ajaxorg/cloud9/blob/devel/client/ext/acebugs/acebugs.js

cloud9 ํ™•์žฅ์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋Š”์ง€ ์•„๋‹ˆ๋ฉด ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์—ฌ๋Ÿฌ๋ถ„์˜ ๋…ธ๋ ฅ์ด ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ž…๋‹ˆ๋‹ค.

AceBugs in Cloud9

์ตœ์ƒ์˜,

๋งคํŠธ

๋งคํŠธ,

์ƒ˜ํ”Œ ์ œ๊ณตํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” Cloud9์„ ์กฐ๊ธˆ ๊ฐ€์ง€๊ณ  ๋†€์•˜์ง€๋งŒ ๋‚˜๋Š” ์—ฌ์ „ํžˆ ๋” ๋งŽ์€ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋‚ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…ํ•˜๋Š” ๋Œ€์‹  ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

-๋งˆ์ดํฌ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰