2014-06-10 12 views
7

Sto provando a cercare un pezzo di codice usando l'API GitHub V3 data solo la parola chiave.Come cercare codice in GitHub con GitHub API?

Ad esempio, se si desidera cercare tutti i pezzi di codice che contengono la parola chiave "addClass", i risultati sarebbero https://github.com/search?q=addClass&type=Code&ref=searchresults senza utilizzare GitHub API.

Ma come posso fare la stessa cosa tramite l'API GitHub? Ho provato https://api.github.com/search/code?q=addClass Dice "Deve includere almeno un utente, organizzazione o repository". Come posso risolvere questo?

risposta

6

che sembra legato alla nuova restrizione "New Validation Rule for Beta Code Search API" (ottobre 2013)

Al fine di sostenere il volume previsto di richieste, stiamo applicando una nuova regola di convalida al Codice Search API. A partire da oggi, è necessario estendere le query di codice a un insieme specifico di utenti, organizzazioni o repository.

Così, l'esempio del API search code menziona ora:

Si supponga di voler trovare la definizione della funzione addClass all'interno jQuery. La query sarebbe simile a questa:

https://api.github.com/search/code?q=addClass+in:file+language:js+repo:jquery/jquery

3

Mentre Gihub attualmente non supporta ricerca codice senza pronti contro termine, un utente o organizzazione (si veda la risposta di VonC), codesearch fa indice alcune fonti da Github via the codesearch API, anche se con un'API meno completa di Github.

Ad esempio, per la ricerca di invocazioni wget indicizzati da Github, chiamano

curl "https://searchcode.com/api/codesearch_I/?q=wget&src=2" 

Il parametro opzionale src raccoglie il codice sorgente (ad esempio, Github, BitBucket) che dovrebbe essere cercata, e si può trovare il suo intero valore per una fonte modificando i parametri della ricerca a faccette nel codesearch UI. Il valore corrente di src per Github è 2.

È possibile verificare che i risultati restituiti dal nell'esempio sopra provengono da github.com visualizzando la proprietà repo di elementi risultati.