Link to this sectionIntegraçã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 teste automático das mesmas. A CI permite-nos manter código de alta qualidade ao detectar 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.
Link to this sectionAções de CI#
Aqui tens uma breve descrição das nossas ações de CI:
- CI: Este é o nosso principal teste de CI, 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 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 quaisquer links quebrados ou inativos nos nossos ficheiros markdown ou HTML.
- CodeQL: CodeQL é uma ferramenta do GitHub que realiza 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 erros.
Link to this sectionResultados de CI#
Abaixo apresentamos a tabela que mostra o estado destes testes de CI para os nossos principais repositórios:
| Repositório | CI | Implantação Docker | Links Quebrados | CodeQL | Publicação PyPI e Docs |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
Cada emblema mostra o estado da última execução do teste de CI correspondente na ramificação main do respetivo repositório. Se um teste falhar, o emblema exibirá um estado de "falha" e, se for aprovado, exibirá um estado de "sucesso".
Se notares um teste a falhar, seria uma grande ajuda se o pudesses reportar através de uma issue no GitHub do respetivo repositório.
Lembra-te, um teste de CI bem-sucedido não significa que tudo esteja perfeito. É sempre recomendável rever manualmente o código antes da implementação ou da fusão de alterações.
Link to this sectionCobertura 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 na identificação de partes não testadas da tua aplicação. Uma elevada percentagem de cobertura de código está frequentemente associada a uma menor probabilidade de bugs. No entanto, é essencial compreender que a cobertura de código não garante a ausência de defeitos. Apenas indica que partes do código foram executadas pelos testes.
Link to this sectionIntegração com codecov.io#
Na Ultralytics, integramos os nossos repositórios com o codecov.io, uma plataforma online popular para medir e visualizar a cobertura de código. O Codecov fornece informações detalhadas, 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, pretendemos manter e melhorar a qualidade do nosso código, concentrando-nos em áreas que podem estar propensas a erros ou que necessitam de mais testes.
Link to this sectionResultados da Cobertura#
Para teres uma visão rápida do estado da cobertura de código do pacote Python ultralytics, incluímos um emblema 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 imediata dos nossos esforços de teste. Para detalhes completos, visita o relatório do 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 único ficheiro. O tamanho e a cor de cada fatia representam o número de declarações e a cobertura, respetivamente.
Link to this sectionFAQ#
Link to this sectionO 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ático 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.
Link to this sectionComo é 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 atuais.
Link to this sectionPorque é que a análise CodeQL é importante para a base de código da Ultralytics?#
A análise CodeQL é crucial para a Ultralytics, uma vez que realiza uma análise semântica de 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.
Link to this sectionComo é que a Ultralytics utiliza o Docker para implantação?#
A Ultralytics emprega 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 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.
Link to this sectionQual é o papel da publicação automática no PyPI na Ultralytics?#
A publicação PyPI automática garante que os nossos projetos possam ser empacotados e publicados sem erros. Este passo é essencial para a distribuição dos pacotes Python da Ultralytics, permitindo aos utilizadores instalar e utilizar facilmente as nossas ferramentas através do Python Package Index (PyPI).
Link to this sectionComo é que a Ultralytics mede a cobertura de código e porque é que é importante?#
A Ultralytics mede a cobertura de código integrando com o Codecov, fornecendo informações sobre quanto da base de código é executado durante os testes. Uma elevada cobertura de código pode indicar um código bem testado, ajudando a descobrir áreas não testadas que podem estar propensas a bugs. As métricas detalhadas de cobertura de código podem ser exploradas através de emblemas exibidos nos nossos principais repositórios ou diretamente no Codecov.