Integração contínua (CI)
A Integração Contínua (IC) é um aspeto essencial do desenvolvimento de software que envolve a integração de alterações e o seu teste automático. A IC permite-nos manter um código de alta qualidade, detectando os problemas numa fase inicial e frequente do processo de desenvolvimento. Em Ultralytics, utilizamos vários testes de IC para garantir a qualidade e a integridade da nossa base de código.
Acções de IC
Segue-se uma breve descrição das nossas acções de IC:
- 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 do Docker: Este teste verifica a implantação do projeto usando o Docker para garantir que o Dockerfile e os scripts relacionados estejam funcionando corretamente.
- Links quebrados: Este teste verifica a base de código em busca de quaisquer ligações quebradas ou mortas nos nossos ficheiros markdown ou HTML.
- CodeQL: O CodeQL é uma ferramenta do GitHub que efectua uma análise semântica do nosso código, ajudando a encontrar potenciais vulnerabilidades de segurança e a manter um código de alta qualidade.
- PyPI Publishing: Este teste verifica se o projeto pode ser empacotado e publicado no PyPi sem quaisquer erros.
Resultados da IC
Abaixo está a tabela que mostra o status desses testes de CI para nossos principais repositórios:
Repositório | IC | Implantação do Docker | Ligações quebradas | CodeQL | Publicação de PyPI e Docs |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
hub-sdk | |||||
cubo | |||||
mkdocs | |||||
thop | |||||
acções | |||||
documentos | |||||
manual |
Cada emblema mostra o estado da última execução do teste de IC correspondente no main
do respetivo repositório. Se um teste falhar, o emblema apresentará o estado "falhando", e se passar, apresentará o estado "passando".
Se verificar que um teste está a falhar, seria uma grande ajuda se pudesse comunicá-lo através de um problema do GitHub no respetivo repositório.
Lembre-se, um teste de CI bem sucedido não significa que tudo está perfeito. Recomenda-se sempre a revisão manual do código antes da implantação ou da fusão de alterações.
Cobertura do código
A cobertura de código é uma métrica que representa a percentagem da sua base de código que é executada quando os seus testes são executados. Fornece uma visão sobre a forma como os seus testes exercitam o seu código e pode ser crucial na identificação de partes não testadas da sua aplicação. Uma alta porcentagem de cobertura de código é 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 quais as partes do código que foram executadas pelos testes.
Integração com codecov.io
Em Ultralytics, integramos nossos repositórios com 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 seu código, indicando quais linhas foram cobertas.
Ao integrarmos o Codecov, pretendemos manter e melhorar a qualidade do nosso código, concentrando-nos em áreas que possam ser propensas a erros ou que necessitem de mais testes.
Resultados da cobertura
Para obter rapidamente um vislumbre do status de cobertura de código do ultralytics
python incluímos um crachá e uma imagem de explosão solar do ultralytics
resultados de cobertura. 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 mais informações, consulte https://codecov.io/github/ultralytics/ultralytics.
Repositório | Cobertura do código |
---|---|
ultralytics |
No gráfico de explosão solar abaixo, o círculo mais interno é o projeto completo, 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.
FAQ
O que é Integração Contínua (CI) em Ultralytics?
A Integração Contínua (CI) em Ultralytics envolve a integração automática e o teste de alterações de código para garantir padrões de alta qualidade. A nossa configuração de IC inclui a execução de testes unitários, verificações de linting e testes abrangentes. Além disso, realizamos a implantação do Docker, verificações de links quebrados, análise CodeQL para vulnerabilidades de segurança e publicação PyPI para empacotar e distribuir nosso software.
Como é que o Ultralytics verifica a existência de ligações quebradas na documentação e no código?
Ultralytics utiliza uma ação de CI específica para verificar se existem ligações quebradas nos nossos ficheiros markdown e HTML. Isto ajuda a manter a integridade da nossa documentação, verificando e identificando ligações mortas ou quebradas, assegurando que os utilizadores têm sempre acesso a recursos precisos e activos.
Porque é que a análise de CodeQL é importante para Ultralytics' base de código?
A análise de CodeQL é crucial para Ultralytics , uma vez que efectua uma análise semântica do código para encontrar potenciais vulnerabilidades de segurança e manter padrões de alta qualidade. Com CodeQL, podemos identificar e mitigar proactivamente os riscos no nosso código, ajudando-nos a fornecer soluções de software robustas e seguras.
Como é que o Ultralytics utiliza o Docker para a implementação?
Ultralytics utiliza o Docker para validar a implementação dos nossos projectos 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 implementação consistentes e reproduzíveis, que são essenciais para soluções de IA escaláveis e fiáveis.
Qual é o papel da publicação automatizada do PyPI em Ultralytics?
A publicação automatizada do PyPI garante que os nossos projectos podem ser empacotados e publicados sem erros. Este passo é essencial para distribuir os pacotes Ultralytics' Python , permitindo aos utilizadores instalar e utilizar facilmente as nossas ferramentas através do Python Package Index (PyPI).
Como é que o Ultralytics mede a cobertura do código e porque é que é importante?
Ultralytics mede a cobertura do código através da integração com o Codecov, fornecendo informações sobre a quantidade da base de código executada 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 ser propensas a bugs. As métricas detalhadas de cobertura de código podem ser exploradas através de emblemas apresentados nos nossos repositórios principais ou diretamente no Codecov.