Java °Ë»ö ¿£Áø »ç¿ë

Ç÷¯±×ÀÎÀº JDT API¸¦ »ç¿ëÇÏ¿© ¸Þ¼Òµå ÂüÁ¶, ÇÊµå ¼±¾ð, ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀÚ µî°ú °°Àº Java ¿ä¼ÒÀÇ ÀÛ¾÷°ø°£¿¡¼­ Java ÇÁ·ÎÁ§Æ®¸¦ °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù.

Java °Ë»öÀÇ ½ÃÀÛÁ¡Àº SearchEngine Ŭ·¡½ºÀÔ´Ï´Ù. Java ¿ä¼Ò¿¡¼­ ƯÁ¤ ÆÐÅÏÀ» Ž»öÇÒ ¼ö ÀÖ½À´Ï´Ù.  °Ë»ö ÆÐÅÏÀº createPatternÀ» »ç¿ëÇÏ¿© ÀÛ¼ºµÉ ¼ö ÀÖ½À´Ï´Ù.  ÆÐÅÏ ¹üÀ§´Â createJavaSearchScopeÀ» »ç¿ëÇÏ¿© ÁöÁ¤µË´Ï´Ù.  ÆÐÅÏ ¹× ¹üÀ§°¡ Á¤ÀǵǸé search ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© °á°ú¸¦ ¼öÁýÇÕ´Ï´Ù.

°Ë»ö °á°ú´Â SearchRequestor·Î º¸°íµÇ¸ç, ÀÌ °á°ú¿¡ ¾×¼¼½ºÇÏ·Á¸é À̸¦ È®ÀåÇØ¾ß ÇÕ´Ï´Ù.

°Ë»ö Áغñ

°Ë»ö Á¶ÀÛÀº °Ë»öÀÇ ¼Ó¼ºÀ» ¼³¸íÇÏ´Â ÆÐÅϰú Á¶»ç ¹üÀ§¸¦ Á¦ÇÑÇÏ´Â ¹üÀ§¸¦ ¸ðµÎ »ç¿ëÇÕ´Ï´Ù.

Java °Ë»ö ÆÐÅÏ ÀÛ¼º

°Ë»ö ÆÐÅÏÀº °Ë»ö °á°ú¸¦ ã´Â ¹æ¹ýÀ» Á¤ÀÇÇÕ´Ï´Ù. Java ¿ä¼Ò(createPatternPattern(IJavaElement, int) ÂüÁ¶) ¶Ç´Â ¹®ÀÚ¿­(createPattern(String, int, int, int) ÂüÁ¶)¿¡¼­ °Ë»ö ÆÐÅÏÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸· ¸Þ¼Òµå´Â ¿ÍÀϵå Ä«µå(¿¹: '*')¸¦ Áö¿øÇÏ°í °Ë»ö °á°ú¸¦ È®´ëÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿¹¸¦ µé¾î, ÁöÁ¤ÇÑ ¸Þ¼Òµå¿¡ ´ëÇÑ ÂüÁ¶¸¦ °Ë»öÇÏ´Â °Ë»ö ÆÐÅÏÀº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.

    // Get the method
    IMethod method = ...;
    
    // Create search pattern
    SearchPattern pattern = SearchPattern.createPattern(method, IJavaSearchConstants.REFERENCES);

¶Ç´Â "Obj"·Î ½ÃÀÛÇÏ´Â ¸ðµç À¯ÇüÀÇ ¼±¾ðÀ» °Ë»öÇÏ´Â °Ë»ö ÆÐÅÏÀº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.

    // Create search pattern
    SearchPattern pattern = SearchPattern.createPattern("Obj*", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE);

´ÙÀ½ °Ë»ö ÆÐÅÏÀ» Áö¿øÇÕ´Ï´Ù.

Java °Ë»ö ¹üÀ§ ÀÛ¼º

ÁöÁ¤ÇÑ ÇÁ·ÎÁ§Æ®¿¡¼­ ¶Ç´Â ÁöÁ¤ÇÑ ÆÐŰÁö¿¡¼­ÀÇ °Ë»ö °á°ú¿¡ °ü½ÉÀÌ ÀÖ´Â °æ¿ì ¶Ç´Â °Ë»ö °á°ú°¡ ÁöÁ¤ÇÑ À¯ÇüÀÇ °èÃþ ±¸Á¶¿¡¼­¸¸ ÀÖÀ» ¼ö ÀÖÀ½À» ¾Ë°í ÀÖ´Â °æ¿ì createJavaSearchScope(IJavaElement[]) ¶Ç´Â createHierarchyScope(IType)À» »ç¿ëÇÏ¿© ÀûÀýÇÑ °Ë»ö ¹üÀ§¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿¹¸¦ µé¾î, ÁöÁ¤ÇÑ ÆÐŰÁö¿¡ ´ëÇÑ °Ë»ö ¹üÀ§´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.

    // Get the package
    IPackageFragment pkg = ...;

    // Create search scope
    IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg});

¶Ç´Â ÁöÁ¤ÇÑ À¯ÇüÀÇ °èÃþ ±¸Á¶¿¡ ´ëÇÑ °Ë»ö ¹üÀ§´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.

    // Get the type
    IType type = ...;

    // Create search scope
    IJavaSearchScope scope = SearchEngine.createHierarchyScope(type);

¸¶Áö¸·À¸·Î createWorkspaceScopeÀ» »ç¿ëÇÏ¿© Àüü ÀÛ¾÷°ø°£À» ºñ±³ÇÏ´Â °Ë»ö ¹üÀ§¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

    // Create search scope
    IJavaSearchScope scope = SearchEngine.createWorkspaceScope();

°Ë»ö

°Ë»ö ÆÐÅϰú °Ë»ö ¹üÀ§¸¦ ÀÛ¼ºÇϰí SearchRequestor¸¦ È®ÀåÇßÀ¸¸é, ´ÙÀ½°ú °°ÀÌ °Ë»ö Á¶È¸¸¦ ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.

    // Get the search pattern
    SearchPattern pattern = ...;

    // Get the search scope
    IJavaSearchScope scope = ...;

    // Get the search requestor
    SearchRequestor requestor = ...;

    // Search
    SearchEngine searchEngine = new SearchEngine();
    searchEngine.search(pattern, new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, scope, requestor, null);

beginReporting ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© °Ë»ö ¿äûÀÚ¿¡°Ô °Ë»ö ½ÃÀÛ ¾Ë¸²À» Àü¼ÛÇÕ´Ï´Ù.  ±×·± ´ÙÀ½, acceptSearchMatch ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© °¢ °Ë»ö °á°ú¸¦ º¸°íÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î endReportingÀº °Ë»öÀÌ Á¾·áµÇ¾úÀ½À» Ç¥½ÃÇÕ´Ï´Ù.

°Ë»ö °á°ú ¼öÁý

°Ë»ö °á°ú´Â acceptSearchMatch(SearchMatch) ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© º¸°íµË´Ï´Ù. ¾Æ·¡ ´Ü¶ôÀº SearchMatchÀÇ ÀϺΠ±â´ÉÀ» °­Á¶Ç¥½ÃÇÕ´Ï´Ù.

ÀÚ¿ø ¹× Java ¿ä¼Ò

°Ë»ö °á°ú´Â Java ¿ä¼Ò(¿¹: À¯Çü ¼±¾ð)¿¡ ÇØ´çÇϰųª Java ¿ä¼Ò(¿¹: ¸Þ¼Òµå ³»ºÎ À¯Çü¿¡ ´ëÇÑ ÂüÁ¶)¿¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù. °Ë»ö ¿£ÁøÀº Ç×»ó °Ë»ö °á°ú¿Í ÀÏÄ¡Çϰųª °Ë»ö °á°ú¸¦ Æ÷ÇÔÇÏ´Â °¡Àå ³»ºÎÀÇ Java ¿ä¼Ò¸¦ ãÀ¸·Á°í ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¸Þ¼Òµå¿¡ ´ëÇÑ ÂüÁ¶¸¦ °Ë»öÇÒ ¶§ ÃʱâÈ­ ÇÁ·Î±×·¥¿¡¼­ ÀÌ·¯ÇÑ ÂüÁ¶¸¦ ãÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼Òµå ÂüÁ¶¸¦ Æ÷ÇÔÇϰí ÀÖ´Â ÃʱâÈ­ ÇÁ·Î±×·¥Àº °Ë»ö ÀÏÄ¡ÀÇ ¿ä¼ÒÀÔ´Ï´Ù.

¶ÇÇÑ °Ë»ö ¿£ÁøÀº Java ¿ä¼Ò°¡ µé¾î ÀÖ´Â ÀÚ¿øÀ» ãÀ¸·Á°í ½ÃµµÇÕ´Ï´Ù. Java ¿ä¼Ò°¡ ÄÄÆÄÀÏ ´ÜÀ§ ¶Ç´Â Ŭ·¡½º ÆÄÀÏ¿¡ µé¾î ÀÖ´Â °æ¿ì ÀÚ¿øÀº ÇØ´çÇÏ´Â IFileÀÔ´Ï´Ù. Java ¿ä¼Ò°¡ .jar ÆÄÀÏ¿¡ µé¾î ÀÖ´Â °æ¿ì ÀÛ¾÷°ø°£¿¡ .jar ÆÄÀÏÀÌ ÀÖÀ¸¸é ¸®ÅÏµÈ ÀÚ¿øÀº ³Î(null)ÀÔ´Ï´Ù.

¼Ò½º À§Ä¡

¼Ò½º À§Ä¡ getOffset ¹× getLength´Â °Ë»ö °á°ú¸¦ Æ÷ÇÔÇÏ´Â ÄÄÆÄÀÏ ´ÜÀ§¿Í °ü·ÃÀÌ ÀÖ½À´Ï´Ù. °Ë»ö °á°ú°¡ .jar ÆÄÀÏ¿¡ µé¾î ÀÖ´Â °æ¿ì ¼Ò½º À§Ä¡´Â ÷ºÎµÈ ¼Ò½º¿Í °ü·ÃÀÌ ÀÖ½À´Ï´Ù. .jar ÆÄÀÏ¿¡ ÷ºÎµÈ ¼Ò½º°¡ ¾ø´Â °æ¿ì ¼Ò½º À§Ä¡´Â (-1, -1)ÀÔ´Ï´Ù.

Á¤È®ÇÑ °Ë»ö °á°ú¿Í ºÎÁ¤È®ÇÑ °Ë»ö °á°ú

´ëºÎºÐÀÇ °æ¿ì¿¡ °Ë»ö °á°ú´Â Á¤È®Çϸç, À̰ÍÀº ÁöÁ¤µÈ ÀÏÄ¡»çÇ×ÀÌ ¿äûÇÑ °ÍÀÓÀ» °Ë»ö ¿£ÁøÀÌ ÆÇº°ÇÒ ¼ö ÀÖÀ½À» ÀǹÌÇÕ´Ï´Ù. ±×·¯³ª ÀϺΠ°æ¿ì °Ë»ö ¿£ÁøÀÌ ÆÇº°ÇÒ ¼ö ¾ø´Âµ¥, ÀÌ °°Àº °æ¿ì ÀÏÄ¡»çÇ×Àº ºÎÁ¤È®ÇÕ´Ï´Ù. ÀÏÄ¡»çÇ×ÀÌ ºÎÁ¤È®ÇÒ ¼ö ÀÖ´Â ¸î °¡Áö ÀÌÀ¯´Â ´ÙÀ½°ú °°½À´Ï´Ù.