Integração Contínua (CI)
A Integração Contínua (CI) é um aspecto essencial do desenvolvimento de software que envolve a integração de alterações e o seu teste automático. A CI permite-nos manter um código de alta qualidade, detectando problemas cedo e frequentemente no processo de desenvolvimento. Na Ultralytics, utilizamos vários testes de CI para garantir a qualidade e a integridade da nossa base de código.
Ações de CI
Aqui tens uma breve descrição das nossas ações de CI:
- CI: Este é o nosso teste de CI principal, que envolve a execução de testes unitários, verificações de linting e, por vezes, testes mais abrangentes, dependendo do repositório.
- Implantação Docker: Este teste verifica a implantação do projeto utilizando o Docker para garantir que o Dockerfile e os scripts relacionados estão a funcionar corretamente.
- Links Quebrados: Este teste analisa a base de código à procura de links quebrados ou inativos nos nossos ficheiros markdown ou HTML.
- CodeQL: O CodeQL é uma ferramenta do GitHub que realiza uma análise semântica no nosso código, ajudando a encontrar potenciais vulnerabilidades de segurança e a manter um código de alta qualidade.
- Publicação PyPI: Este teste verifica se o projeto pode ser empacotado e publicado no PyPI sem quaisquer erros.
Resultados da CI
Abaixo encontra-se a tabela que mostra o estado destes testes de CI para os nossos repositórios principais:
| Repositório | CI | Implantação Docker | Links Quebrados | CodeQL | Publicação PyPI e Documentação |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
Cada badge mostra o estado da última execução do teste de CI correspondente na branch main do respetivo repositório. Se um teste falhar, o badge exibirá um estado de "falha" e, se for aprovado, exibirá um estado de "sucesso".
Se notares que um teste falhou, seria de grande ajuda se pudesses reportá-lo através de uma issue no GitHub no respetivo repositório.
Lembra-te, um teste de CI bem-sucedido não significa que tudo está perfeito. É sempre recomendável rever manualmente o código antes da implementação ou da fusão de alterações.
Cobertura de Código
A cobertura de código é uma métrica que representa a percentagem da tua base de código que é executada quando os teus testes são executados. Fornece uma visão sobre quão bem os teus testes exercitam o teu código e pode ser crucial para identificar partes não testadas da tua aplicação. Uma alta percentagem de cobertura de código está frequentemente associada a uma menor probabilidade de erros. No entanto, é essencial entender que a cobertura de código não garante a ausência de defeitos. Indica apenas quais partes do código foram executadas pelos testes.
Integração com codecov.io
Na Ultralytics, integrámos os nossos repositórios com o codecov.io, uma plataforma online popular para medir e visualizar a cobertura de código. O Codecov fornece insights detalhados, comparações de cobertura entre commits e sobreposições visuais diretamente no teu código, indicando quais as linhas que foram cobertas.
Ao integrar com o Codecov, visamos manter e melhorar a qualidade do nosso código, concentrando-nos em áreas que podem estar sujeitas a erros ou que necessitam de mais testes.
Resultados da Cobertura
Para obteres rapidamente um vislumbre do estado da cobertura de código do pacote Python ultralytics, incluímos um badge e um gráfico sunburst dos resultados da cobertura do ultralytics. Estas imagens mostram a percentagem de código coberto pelos nossos testes, oferecendo uma métrica rápida dos nossos esforços de teste. Para detalhes completos, visita o relatório Codecov da Ultralytics.
| Repositório | Cobertura de Código |
|---|---|
| ultralytics |
No gráfico sunburst abaixo, o círculo mais interno é o projeto inteiro, afastando-se do centro estão as pastas e, finalmente, um ficheiro individual. O tamanho e a cor de cada fatia representam o número de declarações e a cobertura, respetivamente.
FAQ
O que é a Integração Contínua (CI) na Ultralytics?
A Integração Contínua (CI) na Ultralytics envolve a integração e o teste automáticos de alterações de código para garantir padrões de alta qualidade. A nossa configuração de CI inclui a execução de testes unitários, verificações de linting e testes abrangentes. Adicionalmente, realizamos implantação Docker, verificações de links quebrados, análise CodeQL para vulnerabilidades de segurança e publicação PyPI para empacotar e distribuir o nosso software.
Como é que a Ultralytics verifica a existência de links quebrados na documentação e no código?
A Ultralytics utiliza uma ação de CI específica para verificar links quebrados nos nossos ficheiros markdown e HTML. Isto ajuda a manter a integridade da nossa documentação ao analisar e identificar links inativos ou quebrados, garantindo que os utilizadores tenham sempre acesso a recursos precisos e atualizados.
Porque é que a análise CodeQL é importante para a base de código da Ultralytics?
A análise CodeQL é crucial para a Ultralytics, pois realiza uma análise semântica do código para encontrar potenciais vulnerabilidades de segurança e manter padrões de alta qualidade. Com o CodeQL, podemos identificar e mitigar proativamente riscos no nosso código, ajudando-nos a fornecer soluções de software robustas e seguras.
Como é que a Ultralytics utiliza o Docker para implantação?
A Ultralytics utiliza o Docker para validar a implantação dos nossos projetos através de uma ação de CI dedicada. Este processo garante que o nosso Dockerfile e os scripts associados estão a funcionar corretamente, permitindo ambientes de implantação consistentes e reproduzíveis que são críticos para soluções de IA escaláveis e fiáveis.
Qual é o papel da publicação automática no PyPI na Ultralytics?
A publicação PyPI automática garante que os nossos projetos podem ser empacotados e publicados sem erros. Este passo é essencial para distribuir os pacotes Python da Ultralytics, permitindo que os utilizadores instalem e utilizem facilmente as nossas ferramentas através do Python Package Index (PyPI).
Como é que a Ultralytics mede a cobertura de código e porque é importante?
A Ultralytics mede a cobertura de código integrando-se com o Codecov, fornecendo insights sobre quanto da base de código é executado durante os testes. Uma alta cobertura de código pode indicar um código bem testado, ajudando a descobrir áreas não testadas que podem estar sujeitas a erros. As métricas detalhadas de cobertura de código podem ser exploradas através de badges exibidos nos nossos repositórios principais ou diretamente no Codecov.