Ultralytics YOLO27:

Integração Contínua (CI)#

A Integração Contínua (CI) é um aspeto essencial do desenvolvimento de software que envolve integrar alterações e testá-las automaticamente. A CI permite-nos manter código de alta qualidade, detetando problemas atempada e frequentemente ao longo do 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 fica 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.
  • Implementação com Docker: Este teste verifica a implementação do projeto utilizando Docker, para garantir que o Dockerfile e os scripts relacionados funcionam corretamente.
  • Ligações quebradas: Este teste analisa a base de código em busca de ligações quebradas ou inativas nos nossos ficheiros Markdown ou HTML.
  • CodeQL: O CodeQL é uma ferramenta do GitHub que realiza uma análise semântica do nosso código, ajudando a encontrar potenciais vulnerabilidades de segurança e a manter código de alta qualidade.
  • Publicação no PyPI: Este teste verifica se o projeto pode ser empacotado e publicado no PyPI sem erros.

Resultados da CI#

A tabela abaixo mostra o estado destes testes de CI nos nossos principais repositórios:

RepositórioCIImplementação com DockerLigações quebradasCodeQLPublicação no PyPI e da documentação
yolov3CI do YOLOv3Publicar imagens DockerVerificar ligações quebradasCodeQL
yolov5CI do YOLOv5Publicar imagens DockerVerificar ligações quebradasCodeQL
ultralyticsCI da ultralyticsPublicar imagens DockerVerificar ligações quebradasCodeQLPublicar no PyPI e implementar a documentação Compilações Conda
sdkCI do SDKPublicar no PyPI
yolo-ios-appCI da aplicação iOSCodeQLPublicar aplicação iOS
yolo-flutter-appCI da aplicação FlutterCodeQLPublicar no pub.dev
thopAções da UltralyticsCodeQLPublicar no PyPI
actionsCI das açõesCodeQLPublicar no PyPI
mkdocsAções da UltralyticsCodeQLPublicar no PyPI
docsAções da UltralyticsVerificar ligações quebradas
handbookAções da UltralyticsVerificar ligações quebradas
starsAções da UltralyticsAtualizar análises
CLIPCI do CLIP

Cada distintivo mostra o estado da última execução do teste de CI correspondente no ramo main do respetivo repositório. Se um teste falhar, o distintivo mostrará o estado "a falhar"; se passar, mostrará o estado "aprovado".

Se reparares que um teste está a falhar, seria uma grande ajuda se o reportasses através de um issue no GitHub do respetivo repositório.

Lembra-te de que um teste de CI bem-sucedido não significa que tudo esteja perfeito. Recomenda-se sempre rever manualmente o código antes de implementar ou integrar alterações.

Cobertura de código#

A cobertura de código é uma métrica que representa a percentagem da tua base de código executada durante a execução dos testes. Fornece informações sobre o grau de cobertura do teu código pelos testes e pode ser crucial para identificar partes da aplicação que não foram testadas. Uma percentagem elevada de cobertura de código está frequentemente associada a uma menor probabilidade de erros. No entanto, é essencial compreender que a cobertura de código não garante a ausência de defeitos. Indica apenas quais as partes do código que foram executadas pelos testes.

Integração com o 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 informações detalhadas, comparações de cobertura entre commits e sobreposições visuais diretamente no teu código, indicando quais as linhas abrangidas.

Ao integrar o Codecov, pretendemos manter e melhorar a qualidade do nosso código, concentrando-nos nas áreas que podem ser propensas a erros ou necessitar de mais testes.

Resultados da cobertura#

Para obter rapidamente uma visão geral do estado da cobertura de código dos nossos repositórios, incluímos distintivos do Codecov e pré-visualizações sunburst para cada projeto monitorizado. O círculo mais interior de cada sunburst representa o projeto inteiro; afastando-nos do centro, seguem-se as pastas e, por fim, um único ficheiro. O tamanho e a cor de cada fatia representam, respetivamente, o número de instruções e a cobertura. Para obter todos os detalhes, visita a organização Ultralytics no Codecov.

Perguntas frequentes#

  • 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. Além disso, realizamos a implementação com Docker, verificações de ligações quebradas, análise CodeQL para detetar vulnerabilidades de segurança e publicação no PyPI para empacotar e distribuir o nosso software.

  • A Ultralytics utiliza uma ação de CI específica para verificar ligações quebradas nos nossos ficheiros Markdown e HTML. Isto ajuda a manter a integridade da nossa documentação, analisando e identificando ligações inativas ou quebradas e garantindo que os utilizadores têm sempre acesso a recursos corretos e ativos.

  • 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 os riscos no nosso código, ajudando-nos a fornecer soluções de software robustas e seguras.

  • A Ultralytics utiliza o Docker para validar a implementação dos nossos projetos através de uma ação de CI dedicada. Este processo garante que o nosso Dockerfile e os scripts associados funcionam corretamente, permitindo ambientes de implementação consistentes e reproduzíveis, essenciais para soluções de IA escaláveis e fiáveis.

  • A publicação automatizada no PyPI garante que os nossos projetos podem ser empacotados e publicados sem erros. Este passo é essencial para distribuir os pacotes Python da Ultralytics, permitindo aos utilizadores instalar e utilizar facilmente as nossas ferramentas através do Python Package Index (PyPI).

  • A Ultralytics mede a cobertura de código através da integração com o Codecov, fornecendo informações sobre a proporção da base de código executada durante os testes. Uma cobertura de código elevada pode indicar código bem testado, ajudando a revelar áreas não testadas que podem ser propensas a erros. As métricas detalhadas de cobertura de código podem ser consultadas através dos distintivos apresentados nos nossos principais repositórios ou diretamente no Codecov.

Comentários