Skip to content
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
84689fd
config: novo teste
nicolasreisdev Nov 20, 2025
4149190
config: atualização de pipeline e novo teste.
nicolasreisdev Nov 20, 2025
27f1b23
config: desconsiderando testes para testar a pipeline.
nicolasreisdev Nov 20, 2025
f79086b
config: adaptando testes para testar pipeline
nicolasreisdev Nov 20, 2025
d430a0a
config: teste apos configuração em qlty.sh
nicolasreisdev Nov 20, 2025
92cd173
config: novo teste
nicolasreisdev Nov 20, 2025
734482a
config: teste
nicolasreisdev Nov 20, 2025
8b23e3f
config: teste comments
nicolasreisdev Nov 20, 2025
28cc71d
config: teste criação de issues.
nicolasreisdev Nov 20, 2025
2c41ceb
fix pipe config
nicolasreisdev Nov 20, 2025
d292b6d
fix qlty error
nicolasreisdev Nov 20, 2025
5a6ed84
pelo amor de Deus funciona
nicolasreisdev Nov 20, 2025
121953b
por favor
nicolasreisdev Nov 20, 2025
ab54d11
agora acho que o comando esta certo
nicolasreisdev Nov 20, 2025
fa68c67
ta quase
nicolasreisdev Nov 20, 2025
eaa563c
por favor
nicolasreisdev Nov 20, 2025
b8d4a96
ultima tentativa
nicolasreisdev Nov 20, 2025
d62e93d
vamo
nicolasreisdev Nov 20, 2025
7c27468
fui burro e esqueci de tirar o bgl da pipe
nicolasreisdev Nov 20, 2025
2c21a79
pls
nicolasreisdev Nov 20, 2025
8fa7203
pls
nicolasreisdev Nov 20, 2025
5b1cc6b
new test
nicolasreisdev Nov 21, 2025
5a468d6
new command in CLI
nicolasreisdev Nov 21, 2025
fe73e67
CLI funcionando, tentar criar issues.
nicolasreisdev Nov 21, 2025
b8de83d
fix issues create
nicolasreisdev Nov 21, 2025
16136c5
fix create
nicolasreisdev Nov 21, 2025
e6b1c05
fix erros: new test
nicolasreisdev Nov 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 52 additions & 11 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,28 +14,69 @@ jobs:

test-pipeline:
runs-on: ubuntu-latest
permissions:
contents: read
issues: write

steps:
- name: 1. Obter o código (Checkout)
- name: Obter o código (Checkout)
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: 2. Configurar Node.js
- name: Configurar Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'

- name: 3. Instalar dependências do projeto
- name: Instalar dependências do backend
run: npm install
working-directory: ./backend

- name: 4. Rodar Testes e Gerar Cobertura (lcov)
run: npm test -- --coverage
- name: Rodar Testes e Gerar Cobertura (lcov)
run: npm run test:coverage
working-directory: ./backend

- name: 5. Executar Análise de Qualidade (QLTY)
# Usa a Action oficial da Qlty para análise e envio dos dados
uses: qltysh/qlty-action
with:
token: ${{ secrets.QLTY_TOKEN }}
path: .
- name: Install Qlty CLI
uses: qltysh/qlty-action/install@main

- name: Initialize Qlty
run: qlty init --no

- name: Run Qlty smells and save output
run: qlty check --format json . > ../qlty_report.json
working-directory: ./backend

- name: Instalar GitHub CLI (gh)
run: sudo apt-get install gh -y

- name: Debug - Mostrar Conteúdo do Relatório Qlty
run: cat qlty_report.json

- name: Criar Issues no GitHub a partir do Relatório
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ ! -s qlty_report.json ]; then
echo "Relatório Qlty não encontrado ou vazio. Nenhuma Issue será criada."
exit 0
fi

echo "Processando o relatório Qlty e criando Issues..."

sudo apt-get install jq -y

jq -c '.issues[]' qlty_report.json | while read i; do

RULE=$(echo $i | jq -r '.ruleName')
FILE=$(echo $i | jq -r '.path')
LINE=$(echo $i | jq -r '.lineNumber')
MESSAGE=$(echo $i | jq -r '.message' | sed 's/"/\\"/g') # Escapa aspas

TITLE="[Qlty Smell] $RULE em $FILE"
BODY="**Detalhes do Débito Técnico**\n\n- **Regra:** $RULE\n- **Arquivo:** \`$FILE\`\n- **Linha:** $LINE\n\n---\n**Mensagem do Qlty:** $MESSAGE\n\n\nCriado automaticamente pelo pipeline de CI."

gh issue create --title "$TITLE" --body "$BODY" --label "technical-debt" --repo ${{ github.repository }}
echo "Issue criada para: $TITLE"
done
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,6 @@ Construir um sistema de ponta a ponta que rastreia fóruns, processa o texto das
### Cobertura de testes:
- No terminal dentro da pasta backend, execute o comando: npm run test:coverage
- Para verificar a cobertura de testes, entre na pasta backend/src/coverage/lcov-report e abra o arquivo index.html no navegador para melhor análise.


## Configuração da verificação de code smells:
248 changes: 136 additions & 112 deletions backend/src/coverage/clover.xml

Large diffs are not rendered by default.

17 changes: 7 additions & 10 deletions backend/src/coverage/coverage-final.json

Large diffs are not rendered by default.

84 changes: 42 additions & 42 deletions backend/src/coverage/lcov-report/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,30 +23,30 @@ <h1>All files</h1>
<div class='clearfix'>

<div class='fl pad1y space-right2'>
<span class="strong">67.22% </span>
<span class="strong">58.16% </span>
<span class="quiet">Statements</span>
<span class='fraction'>80/119</span>
<span class='fraction'>89/153</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">55% </span>
<span class="strong">43.75% </span>
<span class="quiet">Branches</span>
<span class='fraction'>11/20</span>
<span class='fraction'>14/32</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">29.41% </span>
<span class="strong">25.64% </span>
<span class="quiet">Functions</span>
<span class='fraction'>10/34</span>
<span class='fraction'>10/39</span>
</div>


<div class='fl pad1y space-right2'>
<span class="strong">67.22% </span>
<span class="strong">58.55% </span>
<span class="quiet">Lines</span>
<span class='fraction'>80/119</span>
<span class='fraction'>89/152</span>
</div>


Expand Down Expand Up @@ -79,48 +79,48 @@ <h1>All files</h1>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="src"><a href="src/index.html">src</a></td>
<td data-value="85" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 85%"></div><div class="cover-empty" style="width: 15%"></div></div>
<td class="file medium" data-value="src"><a href="src/index.html">src</a></td>
<td data-value="56.92" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 56%"></div><div class="cover-empty" style="width: 44%"></div></div>
</td>
<td data-value="85" class="pct high">85%</td>
<td data-value="40" class="abs high">34/40</td>
<td data-value="50" class="pct medium">50%</td>
<td data-value="10" class="abs medium">5/10</td>
<td data-value="83.33" class="pct high">83.33%</td>
<td data-value="6" class="abs high">5/6</td>
<td data-value="85" class="pct high">85%</td>
<td data-value="40" class="abs high">34/40</td>
<td data-value="56.92" class="pct medium">56.92%</td>
<td data-value="65" class="abs medium">37/65</td>
<td data-value="31.25" class="pct low">31.25%</td>
<td data-value="16" class="abs low">5/16</td>
<td data-value="62.5" class="pct medium">62.5%</td>
<td data-value="8" class="abs medium">5/8</td>
<td data-value="56.92" class="pct medium">56.92%</td>
<td data-value="65" class="abs medium">37/65</td>
</tr>

<tr>
<td class="file medium" data-value="src/business"><a href="src/business/index.html">src/business</a></td>
<td data-value="77.41" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 77%"></div><div class="cover-empty" style="width: 23%"></div></div>
<td data-value="66.66" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 66%"></div><div class="cover-empty" style="width: 34%"></div></div>
</td>
<td data-value="77.41" class="pct medium">77.41%</td>
<td data-value="31" class="abs medium">24/31</td>
<td data-value="60" class="pct medium">60%</td>
<td data-value="10" class="abs medium">6/10</td>
<td data-value="20" class="pct low">20%</td>
<td data-value="10" class="abs low">2/10</td>
<td data-value="77.41" class="pct medium">77.41%</td>
<td data-value="31" class="abs medium">24/31</td>
<td data-value="66.66" class="pct medium">66.66%</td>
<td data-value="45" class="abs medium">30/45</td>
<td data-value="56.25" class="pct medium">56.25%</td>
<td data-value="16" class="abs medium">9/16</td>
<td data-value="15.38" class="pct low">15.38%</td>
<td data-value="13" class="abs low">2/13</td>
<td data-value="66.66" class="pct medium">66.66%</td>
<td data-value="45" class="abs medium">30/45</td>
</tr>

<tr>
<td class="file high" data-value="src/controller"><a href="src/controller/index.html">src/controller</a></td>
<td data-value="81.81" class="pic high">
<div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
<td class="file medium" data-value="src/controller"><a href="src/controller/index.html">src/controller</a></td>
<td data-value="52.94" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 52%"></div><div class="cover-empty" style="width: 48%"></div></div>
</td>
<td data-value="81.81" class="pct high">81.81%</td>
<td data-value="22" class="abs high">18/22</td>
<td data-value="52.94" class="pct medium">52.94%</td>
<td data-value="34" class="abs medium">18/34</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="66.66" class="pct medium">66.66%</td>
<td data-value="3" class="abs medium">2/3</td>
<td data-value="81.81" class="pct high">81.81%</td>
<td data-value="22" class="abs high">18/22</td>
<td data-value="33.33" class="pct low">33.33%</td>
<td data-value="6" class="abs low">2/6</td>
<td data-value="54.54" class="pct medium">54.54%</td>
<td data-value="33" class="abs medium">18/33</td>
</tr>

<tr>
Expand All @@ -129,13 +129,13 @@ <h1>All files</h1>
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="22" class="abs low">0/22</td>
<td data-value="5" class="abs low">0/5</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="0" class="abs high">0/0</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="14" class="abs low">0/14</td>
<td data-value="11" class="abs low">0/11</td>
<td data-value="0" class="pct low">0%</td>
<td data-value="22" class="abs low">0/22</td>
<td data-value="5" class="abs low">0/5</td>
</tr>

<tr>
Expand All @@ -161,7 +161,7 @@ <h1>All files</h1>
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-11-16T16:41:26.687Z
at 2025-11-20T19:46:45.688Z
</div>
<script src="prettify.js"></script>
<script>
Expand Down
2 changes: 1 addition & 1 deletion backend/src/coverage/lcov-report/src/app.ts.html
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ <h1><a href="../index.html">All files</a> / <a href="index.html">src</a> app.ts<
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2025-11-16T16:41:26.687Z
at 2025-11-20T19:46:45.688Z
</div>
<script src="../prettify.js"></script>
<script>
Expand Down
Loading
Loading