code intelligence in komodo
Download
Skip this Video
Download Presentation
Code Intelligence in Komodo

Loading in 2 Seconds...

play fullscreen
1 / 25

Code Intelligence in Komodo - PowerPoint PPT Presentation


  • 112 Views
  • Uploaded on

Code Intelligence in Komodo. Trent Mick [email protected] “Code Intelligence” is. a Code Browser autocomplete and call tips. What in it for me?. See how an IDE Code Browser can be built Learn about some useful Python packages Couldn’t find Mitch Kapor and lunch isn’t served yet, so….

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Code Intelligence in Komodo' - lizina


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
code intelligence is
“Code Intelligence” is
  • a Code Browser
  • autocomplete and call tips
what in it for me
What in it for me?
  • See how an IDE Code Browser can be built
  • Learn about some useful Python packages
  • Couldn’t find Mitch Kapor and lunch isn’t served yet, so…
code intelligence system overview
Code Intelligence System Overview

Komodo

Python CILE

Perl CILE

Manager API

PHP CILE

Scheduler

Tcl CILE

Manager

XSLT CILE

SQL

C/C++ CILE

CIDB

COM CILE

CIX (XML)

Java CILE

application
Application

Komodo

Python CILE

Python CILE

Perl CILE

Perl CILE

Manager API

PHP CILE

Scheduler

Tcl CILE

Manager

XSLT CILE

SQL

C/C++ CILE

CIDB

COM CILE

CIX (XML)

Java CILE

what we re going for
What we’re going for

Code Browser

Autocomplete

Call tips

database
Database

Komodo

Python CILE

Python CILE

Perl CILE

Perl CILE

Manager API

PHP CILE

Scheduler

Tcl CILE

Manager

XSLT CILE

SQL

C/C++ CILE

CIDB

COM CILE

CIX (XML)

Java CILE

database1
Database

Meta

  • SQLite for database
  • Separate “Files” and “Modules” for Perl and Tcl
  • Allow multiple scanners per file (e.g. Python, COM, and PyXPCOM)
  • Tip: include a “Meta” table

Files

Scans

Modules

Symbols

xml description format cix
XML description format (CIX)

Komodo

Python CILE

Python CILE

Perl CILE

Perl CILE

Manager API

PHP CILE

Scheduler

Tcl CILE

Manager

XSLT CILE

C/C++ CILE

CIDB

COM CILE

CIX (XML)

Java CILE

xml description format cix1
XML description format (CIX)

               ...

  • language-agnostic
  • storable and distributable
xml description format cix2
XML description format (CIX)

                    float ...]]>                             

  • , , , , , , , etc. tags define structure of the code
language engines ciles
Language Engines (CILEs)

Komodo

Python CILE

Python CILE

Perl CILE

Perl CILE

Manager API

PHP CILE

Scheduler

Tcl CILE

Manager

XSLT CILE

SQL

C/C++ CILE

CIDB

COM CILE

CIX (XML)

Java CILE

python language engine
Python Language Engine

Python Source Code

 198    # Convert string to float 199    defatof(s):  200        """atof(s) -> float  201      202        Return the floating point …  203      204        """  205        return_float(s)

AST from compiler

Function('atof', ['s'], [], 0, 'atof(s) -> float...',

Stmt([

Return(

CallFunc(Name('_float'), [Name('s')], …)]))

CIX

 float ...]]>

php language engine
PHP Language Engine

PHP Source Code

  2     float   4    # ...   5    function atof($s) {    6        return _float($s);    7    }    8    ?>

parse with regular expressions

CIX

 float ...]]>

perl tcl xslt language engines
Perl, Tcl, XSLT Language Engines
  • The only thing that can parse Perl is Perl (but scintilla comes close)
  • Tcl can parse Tcl
  • Tclwrap can make an executable from Tcl
  • libxml can parse XSLT
scheduler
Scheduler

Komodo

Python CILE

Python CILE

Perl CILE

Perl CILE

Manager API

PHP CILE

Scheduler

Tcl CILE

Manager

XSLT CILE

SQL

C/C++ CILE

CIDB

COM CILE

CIX (XML)

Java CILE

scheduler1
Scheduler
  • Info must update dynamically as the user types, but not interfere with editing: i.e. asynchronous
  • “Scheduler” is a thread that manages a small pool of “Scan Runner” threads to scan file content.
tip import queue
Tip: import Queue
  • From the Python Library Reference:

The Queue module implements a multi-producer, multi-consumer FIFO queue. It is especially useful in threads programming when information must be exchanged safely between multiple threads.

Manager

Scheduler

s = Scheduler()

s.queue.put("scan string.py")

s.queue.put("scan string.php")

while 1:

request = self.queue.get()

# process request...

tip import queue1
Tip: import Queue
  • This is a Priority Queue:

class PriorityQueue(Queue.Queue):

def _put(self, item):

bisect.insort(self.queue, item)

autocomplete calltips
Autocomplete/Calltips
  • Type inferencing
    • c.f. Mike Salib’s “Starkiller” talk tomorrow
  • Automatic triggering (language dependent):
    • Python: foo.
    • Perl: $foo->
    • PHP: pri
possibilities
Possibilities
  • Other language engines:
    • C/C++, Java, COM, XML/XHTML
  • Distributing CIX files for binary packages
  • Custom user data in the database:
    • method frequency tracking
thank you
Thank you

Questions?

Trent Mick ([email protected])

ad