Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
47 changes: 47 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Default behavior:
* text=auto eol=lf

# Python files
*.py text eol=lf

# Configuration and text files
*.toml text eol=lf
*.ini text eol=lf
*.cfg text eol=lf
*.md text eol=lf
*.txt text eol=lf
*.json text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
.editorconfig text eol=lf
.gitignore text eol=lf
.gitattributes text eol=lf

# Lock files should be treated as text with LF endings
uv.lock text eol=lf

# Make Jupyter Notebook diffs readable
# Requires users to install nbdime (pip install nbdime)
# and run `nbdime config-git --enable --global`
*.ipynb diff=nbdime

# Mark binary files to prevent Git from trying to change their line endings
# This prevents corruption of these files.
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.pyc binary
*.so binary
*.sqlite3 binary
*.db binary
*.zip binary
*.gz binary
*.pdf binary

# Exclude specific files/directories from git archive (e.g., when downloading a zip)
# This is great for providing students with a clean project download.
/.github export-ignore
/tests/ export-ignore
/.pytest_cache/ export-ignore
13 changes: 7 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,22 @@ jobs:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v6
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Set up JDK 17
uses: actions/setup-java@v1
- name: Set up JDK 25
uses: actions/setup-java@v5
with:
java-version: 17
distribution: 'temurin'
java-version: 25
- name: Cache SonarCloud packages
uses: actions/cache@v1
uses: actions/cache@v4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache Gradle packages
uses: actions/cache@v1
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
Expand Down
40 changes: 40 additions & 0 deletions .github/workflows/qodana_code_quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#-------------------------------------------------------------------------------#
# Discover all capabilities of Qodana in our documentation #
# https://www.jetbrains.com/help/qodana/about-qodana.html #
#-------------------------------------------------------------------------------#

name: Qodana
on:
workflow_dispatch:
pull_request:
push:
branches:
- master
- chore/versoins-bump
Comment on lines +10 to +13
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove feature branch from push triggers before merging.

The chore/versoins-bump branch trigger appears to be for testing this workflow during development. Remove it before merging to avoid running Qodana on a stale/deleted branch.

🧹 Suggested fix
   push:
     branches:
       - master
-      - chore/versoins-bump
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
push:
branches:
- master
- chore/versoins-bump
push:
branches:
- master
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/qodana_code_quality.yml around lines 10 - 13, The
workflow's push trigger currently lists a development branch
"chore/versoins-bump" under the push: branches: section; remove that branch name
from the branches array so only intended branches (e.g., "master") remain,
ensuring the push trigger does not run for the temporary feature/test
branch—update the branches list under the push key and commit the change.


jobs:
qodana:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
checks: write
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
- name: 'Qodana Scan'
uses: JetBrains/qodana-action@v2025.3
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
with:
# When pr-mode is set to true, Qodana analyzes only the files that have been changed
pr-mode: false
use-caches: true
post-pr-comment: true
use-annotations: true
# Upload Qodana results (SARIF, other artifacts, logs) as an artifact to the job
upload-result: false
# quick-fixes available in Ultimate and Ultimate Plus plans
push-fixes: 'none'
49 changes: 49 additions & 0 deletions qodana.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#-------------------------------------------------------------------------------#
# Qodana analysis is configured by qodana.yaml file #
# https://www.jetbrains.com/help/qodana/qodana-yaml.html #
#-------------------------------------------------------------------------------#

#################################################################################
# WARNING: Do not store sensitive information in this file, #
# as its contents will be included in the Qodana report. #
#################################################################################
version: "1.0"

#Specify inspection profile for code analysis
profile:
name: qodana.starter

#Enable inspections
#include:
# - name: <SomeEnabledInspectionId>

#Disable inspections
#exclude:
# - name: <SomeDisabledInspectionId>
# paths:
# - <path/where/not/run/inspection>

projectJDK: "17" #(Applied in CI/CD pipeline)

#Execute shell command before Qodana execution (Applied in CI/CD pipeline)
#bootstrap: sh ./prepare-qodana.sh

#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline)
#plugins:
# - id: <plugin.id> #(plugin id can be found at https://plugins.jetbrains.com)

# Quality gate. Will fail the CI/CD pipeline if any condition is not met
# severityThresholds - configures maximum thresholds for different problem severities
# testCoverageThresholds - configures minimum code coverage on a whole project and newly added code
# Code Coverage is available in Ultimate and Ultimate Plus plans
#failureConditions:
# severityThresholds:
# any: 15
# critical: 5
# testCoverageThresholds:
# fresh: 70
# total: 50

#Qodana supports other languages, for example, Python, JavaScript, TypeScript, Go, C#, PHP
#For all supported languages see https://www.jetbrains.com/help/qodana/linters.html
linter: jetbrains/qodana-jvm-community:2026.1
Comment on lines +47 to +49
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if the Qodana Docker image tag exists
curl -s "https://hub.docker.com/v2/repositories/jetbrains/qodana-jvm-community/tags/2026.1" | jq '.name // "Tag not found"'

Repository: rabestro/graph-pathfinding-algorithms

Length of output: 96


Update Qodana linter to an available version.

The image tag jetbrains/qodana-jvm-community:2026.1 does not exist on Docker Hub. Use a valid, released version (e.g., 2025.3-community or later current release) instead.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@qodana.yaml` around lines 47 - 49, The linter image tag is invalid: update
the linter key value (currently "jetbrains/qodana-jvm-community:2026.1") in
qodana.yaml to a released tag (for example
"jetbrains/qodana-jvm-community:2025.3-community" or the latest available
release) so the Docker image exists; ensure you replace the exact string
"jetbrains/qodana-jvm-community:2026.1" with a valid tag.

Loading