IDF + AI vi mostro come

Ciao.

Vi faccio dono di un semplice tool exe che ho creato con Claude.

Lo potete scaricare da qui:

è un exe che io tengo in c:\Program Files (x86)\INDE\Copier

in pratica serve a accelerare al massimo l’esportazione su file di testo del codice IDF. Non del codice compilato, ma del codice “copy as text”.

Con questo tool si crea facilmente un file di testo con tutti i metodi e gli eventi cocatentenati

Dando poi in pasto a claude o chat gpt questo codice + eventualmetne un trace del debug si hanno i superpoteri. Ho notato che claude deduce da solo quali sono le proprietà di una classe e il loro datatype, per questo basta passare i metodi.

In attesa di AI Assistant in Studio, questo già aiuta moltissimo.

Io sono super elettrizzato e questo tool mi sta cambiando come lavoro: ora quando parlo con Claude riesco a spiegargli tutto il contesto, e le risposte sono molto più utili di prima in cui si inventava sempre troppo.

Il tool non ha una UX da paura ma per iniziare:

  1. apire un progetto IDF
  2. lanciare infecopier
  3. cliccare “scan” (bottone verde)
  4. cliccare sul nodo di partenza e quello di arrivo

Inizia lo scan. Lui scorre tutto l’albero dal nodo di partenza a quello di arrivo e copia nella sua UI il codice dei metodi, ignora il resto (cartelle, classi, proprietà, nodi principali). Quando finisce mostra un popup da cui si può fare copy e poi incollare su claude.
la UI è tutta in inglese, ma non c’è molto altro da capire, il modo manuale invece serve a cliccare su un metodo e a copiarlo singolarmente. Non serve più a molto, mi è stato utile per sviluppare la logica di base.

Io spero vi sia utile, tanto è una cosa che “finsice con idf”, però ad oggi quello abbiamo.

Buona giornata!

7 Mi Piace

@f.faleschini interessante quello che hai realizzato e per farsi aiutare da Claude sul codice direi che è molto utile.
Con cosa è realizzato e come naviga l’albero del progetto?

Ciao @paolo.giannelli . L’ho fatto con Claude in VS Code in 1 giorno e mezzo mentre lavoravo ad un altro progetto su IDF, tipo nelle pause mandavo un prompt e claude mi migliroava un po’ il progetto. Ho consumato la quota completa di claude pro per 1 giorno e mezzo per finirlo, ma davvero ho solo “dato comandi a claude” (per anni ho fatto il project manager che non scrive codice e dice agli sviluppatori cosa fare, ora per fortuna sono passato dall’altra parte, quindi mi viene bene).

Per rispondere alla tua domanda (questa parte tecnica l’ho fatta scrivere a Claude - tutte le scelte tecniche le abbiamo fatte sperimentando: non è che il trucco implementato abbia funzionato al primo colpo, abbiamo fatto e disfatto più volte):

È un’app WinForms C# (.NET 4.7.2).

Per navigare l’albero del progetto InDe usa le Win32 API native — in pratica parla direttamente con il controllo TreeView (SysTreeView32) del IDE C++ di InDe tramite SendMessage.

Nel dettaglio:

  • Trova la TreeView: EnumWindows + EnumChildWindows per localizzare il controllo SysTreeView32 nella finestra di InDe

  • Naviga l’albero con DFS (depth-first search) usando le API del TreeView:

    • TVM_GETNEXTITEM con TVGN_CHILD e TVGN_NEXT per scoprire i nodi figli/fratelli

    • TVM_EXPAND per espandere i nodi chiusi

    • TVM_SELECTITEM per selezionare ogni nodo

  • Legge le icone dei nodi con TVM_GETITEMW + ReadProcessMemory (cross-process) per capire se un nodo è una procedura, funzione o evento (ogni tipo ha un’icona diversa)

  • Copia il codice: quando trova un metodo, simula Ctrl+C con keybd_event e poi fa polling della clipboard finché non arriva il contenuto nuovo

In sostanza è una scansione ricorsiva stack-based che visita tutto il sottoalbero a partire dal nodo su cui clicchi, e accumula il codice di tutti i metodi che trova. Il bello è che usa solo API native, niente OCR o screen scraping.

Ho messo il progetto su github qui così è visibile e anche io non me lo perdo:

Ho usato github solo per segnalare bug su progetti opensource per ora, in ogni caso meglio metterlo lì che non metterlo. Tecnicamente è un “github per la community”, però così ci ho messo 3 minuti, alternativamente avrei dovuto caricare uno zip qui….

La versione caricata è leggermente migliorata rispetto all’exe caricato nel mio primo messaggio (questa ha anche la versione 1.0.0 nella form caption e inoltre consente di cliccare su due nodi “sibling”, ovvero scansionare ad esempio da un metodo di una classe a un altro metodo di una classe, piccola mancanza della versione che vi avevo mandato). Ho appena aggiornato la condivisione quindi ora se scaricate l’exe dal mio messaggio precedente viene giù l’ultimo….

In ogni caso mi piacerebbe sapere se qualcuno ha usato IndeCopier. I miei colleghi lo stanno apprezzando molto.

Ciao!

7 Mi Piace

@f.faleschini grazie della spiegazione!

1 Mi Piace