Olá a todos, queridos amigos! Como amante dos novos recursos do GitHub, fiquei muito interessado em saber que em breve todos poderemos pesquisar de forma rápida e eficiente a base de código do GitHub. Isso pode ser muito conveniente, especialmente se você precisar encontrar uma maneira sofisticada de usar uma ferramenta. Isto ressoa especialmente com o fato de que um futuro concorrente do GitHub foi aberto na Rússia. Portanto, o GitHub definitivamente não deve descansar sobre os louros, apesar de serem, sem dúvida, os líderes do mercado. Precisamos seguir em frente e nos desenvolver, caso contrário, não demorará nem uma hora e os concorrentes nos alcançarão e nos afastarão. E que não pareça tão incrível. Por exemplo: quantas pessoas ainda usam telefones Nokia? Quem sabe eles fizeram telefones? Houve uma época em que eram líderes de mercado simplesmente inatingíveis e indiscutíveis... E agora aparecem em algum lugar no reino do erro estatístico.
Primeira impressão
GitHub criou um projeto onde você pode pesquisar, navegar e analisar seu código e os bilhões de linhas de código publicadas no GitHub. É importante observar que a pesquisa é escalável, rápida e precisa. Ele foi criado do zero especificamente para pesquisa de código. A navegação funciona para 10 principais linguagens de programação sem configurações (esperamos que a lista cresça no futuro). Você pode pesquisar usando uma expressão regular, o que é muito legal. Outros filtros também estão disponíveis:- por organização;
- por linguagens de programação;
- por proprietário específico;
- por extensão de arquivo;
- por expressão regular.
Vamos falar mais detalhadamente sobre pesquisa
É muito interessante dar uma olhada e tentar procurar por si mesmo: é tão conveniente quanto dizem? Por enquanto, esse recurso não está disponível publicamente e você pode se adicionar à lista de espera através do link . Aí preenchemos todos os pontos, as perguntas são simples, não vou descrevê-las aqui. Como resultado, somos adicionados à lista de espera e seguimos em frente. Como resultado, a resposta será esta: basta esperar. Assim que for adicionado, com certeza mostrarei tudo a vocês. Não demore, adicione-se para que você possa descobrir mais tarde e usá-la como quiser) E claro, é uma pena que você não possa experimentar a nova ferramenta imediatamente, então vamos analisar a documentação deles e descrevê-la em mais detalhes como podemos usar esta ferramenta para o nosso trabalho. Agora sobre a pesquisa. Ele usará classes e construções que façam sentido na biblioteca que estou escrevendo. Isso tornará tudo mais claro e fácil para mim e espero que seja mais fácil para você também.Pesquisa básica
ImageComparison é a pesquisa mais simples que pesquisa exatamente com a consulta nos nomes dos arquivos e em seu conteúdo. Tudo parece muito simples aqui. Se quisermos encontrar claramente pelo nome da classe, onde ela é declarada e onde é usada, tal pesquisa nos ajudará nisso. Quando você insere várias palavras separadas por espaços, o resultado será uma pesquisa por todas elas separadamente: Image Comparison , o que significa que encontrará arquivos e códigos para Image e Comparison . Se você precisar procurar uma string contendo espaços, basta usar aspas. Por exemplo: “Comparação ImageComparison = new ImageComparison()” e então a pesquisa corresponderá à string inteira. Para escapar, usamos “\” como sempre. Até agora, tudo é intuitivo e muitas vezes é assim que se faz. Além disso, podemos adicionar filtros a esta pesquisa básica. Portanto, vamos falar sobre cada um deles. Estes serão “ANDs” lógicos para o filtro que já criamos.Filtrar por repositório
Assim que nosso filtro básico estiver pronto, podemos restringir nossa pesquisa e pesquisar por repositório específico, o que é muito conveniente. Você não precisa procurar em qual pasta a classe está localizada, basta escrever:
repo: romankh3/image-comparison ImageComparisonResult
Onde precisamos especificar repo:${user_name}/${repo_name} . Você também pode pesquisar em vários repositórios simplesmente adicionando um OR:
repo:romankh3/comparação de imagens OU repo:romankh3/usage-image-comparison ImageComparisonResult
Conforme declarado no GitHub, no momento eles não suportam pesquisa em repositórios onde o nome é especificado como uma expressão regular... Isso significa que eles estão planejando adicionar tal recurso e isso significa que o projeto não irá parar no declarado funcionalidade e se desenvolverá ainda mais.
Filtrar por organização
A busca por organização ou usuário é feita da mesma forma que a busca por repositório, só que a palavra-chave não será repo , mas sim org :
org: romankh3 Comparação de imagens
E então a busca passará por todos os repositórios do usuário/organização.
Filtrar por linguagens de programação
Você também pode especificar uma pesquisa de arquivos em uma linguagem de programação específica. Aqui a construção é a mesma do repositório e organização, apenas a palavra-chave é idioma :
idioma:java ImageComparison
Assim como o repositório, ele suporta pesquisa em vários idiomas ao mesmo tempo usando a palavra-chave OR:
idioma:java OU idioma:ruby ImageComparison
Uma lista completa de idiomas suportados pelo GitHub pode ser encontrada aqui . Eu me pergunto se BrainFuck está aí? 😂
Filtrar por caminho de arquivo
Cada arquivo do projeto tem seu próprio caminho e você também pode pesquisá-lo adicionando um filtro. Por exemplo, existe um arquivo ImageComparisonResult , que possui o caminho:
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
Portanto, para encontrar todas as classes cujo caminho começa com src/main/java/com/github/romankh3/image , você precisa:
caminho:src/main/java/com/github/romankh3/image
Pode ser útil nos casos em que não queremos que as classes de teste fiquem de fora dos resultados da pesquisa. Ou vice-versa, apenas testes. Isso torna sua pesquisa mais flexível. Um filtro por caminho de arquivo pode ser especificado usando uma expressão regular. Por exemplo, precisamos encontrar
caminho:src/*/*.js
Operações booleanas
E, claro, o ponto culminante de toda a construção de filtros é combinar esse assunto usando operações booleanas. Para isso temos AND, OR e NOT. Acho que isso deveria ser suficiente para nós. Por exemplo, vamos criar uma consulta de pesquisa complexa: código de produção Java ou Kotlin para um usuário/organização específico:
repo:romankh3 AND (idioma:java OR idioma:kotlin) AND NOT caminho:*/test/*
E isso, eu lhe digo, é simplesmente incrível. O pedido de pesquisa é escrito de forma simples, rápida, concisa e clara que não haverá problemas na pesquisa e leitura do pedido.
GO TO FULL VERSION