From fa62c0ef6f1134418e7f7c907c0242cfa1f69200 Mon Sep 17 00:00:00 2001 From: heyzec <61238538+heyzec@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:09:04 +0800 Subject: [PATCH 01/10] replace warn with warning "warning: the log level :warn is deprecated, use :warning instead" --- config/test.exs | 2 +- lib/cadet/jobs/autograder/lambda_worker.ex | 2 +- lib/cadet/jobs/xml_parser.ex | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/test.exs b/config/test.exs index 73c0e3451..30a8f8cc0 100644 --- a/config/test.exs +++ b/config/test.exs @@ -9,7 +9,7 @@ config :cadet, CadetWeb.Endpoint, config :cadet, environment: :test # Print only warnings and errors during test -config :logger, level: :warn, compile_time_purge_matching: [[level_lower_than: :warn]] +config :logger, level: :warning, compile_time_purge_matching: [[level_lower_than: :warning]] config :ex_aws, access_key_id: "hello", diff --git a/lib/cadet/jobs/autograder/lambda_worker.ex b/lib/cadet/jobs/autograder/lambda_worker.ex index a2a6d3f7a..00a6b266c 100644 --- a/lib/cadet/jobs/autograder/lambda_worker.ex +++ b/lib/cadet/jobs/autograder/lambda_worker.ex @@ -21,7 +21,7 @@ defmodule Cadet.Autograder.LambdaWorker do lambda_params = build_request_params(params) if Enum.empty?(lambda_params.testcases) do - Logger.warn("No testcases found. Skipping autograding for answer_id: #{answer.id}") + Logger.warning("No testcases found. Skipping autograding for answer_id: #{answer.id}") # Fix for https://github.com/source-academy/backend/issues/472 Process.sleep(1000) else diff --git a/lib/cadet/jobs/xml_parser.ex b/lib/cadet/jobs/xml_parser.ex index b49128506..bbdb651f3 100644 --- a/lib/cadet/jobs/xml_parser.ex +++ b/lib/cadet/jobs/xml_parser.ex @@ -34,7 +34,7 @@ defmodule Cadet.Updater.XMLParser do :ok else {:error, stage, %{errors: [assessment: {"has submissions", []}]}, _} when is_atom(stage) -> - Logger.warn("Assessment has submissions, ignoring...") + Logger.warning("Assessment has submissions, ignoring...") {:ok, "Assessment has submissions, ignoring..."} {:error, error_message} -> From f125d7fc82e40efd5891034111f016cbe2c7a288 Mon Sep 17 00:00:00 2001 From: heyzec <61238538+heyzec@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:12:21 +0800 Subject: [PATCH 02/10] empty doc "warning: module attribute @doc was set but no definition follows it" --- lib/cadet/notifications.ex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/cadet/notifications.ex b/lib/cadet/notifications.ex index cc65d529a..57aaedd85 100644 --- a/lib/cadet/notifications.ex +++ b/lib/cadet/notifications.ex @@ -276,15 +276,15 @@ defmodule Cadet.Notifications do |> Repo.insert() end - @doc """ - Returns the list of sent_notifications. + # @doc """ + # Returns the list of sent_notifications. - ## Examples + # ## Examples - iex> list_sent_notifications() - [%SentNotification{}, ...] + # iex> list_sent_notifications() + # [%SentNotification{}, ...] - """ + # """ # def list_sent_notifications do # Repo.all(SentNotification) From 492d827c36153ef9e0f440d6557cace98208d438 Mon Sep 17 00:00:00 2001 From: heyzec <61238538+heyzec@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:16:50 +0800 Subject: [PATCH 03/10] replace '' with "" "warning: using single-quoted strings to represent charlists is deprecated." --- lib/cadet/devices/devices.ex | 2 +- lib/cadet_web/admin_controllers/admin_stories_controller.ex | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/cadet/devices/devices.ex b/lib/cadet/devices/devices.ex index daaf117be..bde47eb09 100644 --- a/lib/cadet/devices/devices.ex +++ b/lib/cadet/devices/devices.ex @@ -212,7 +212,7 @@ defmodule Cadet.Devices do }, 300, [], - '' + "" ) # ExAws includes the session token in the signed payload and doesn't allow diff --git a/lib/cadet_web/admin_controllers/admin_stories_controller.ex b/lib/cadet_web/admin_controllers/admin_stories_controller.ex index a6cdd46c0..dd077a983 100644 --- a/lib/cadet_web/admin_controllers/admin_stories_controller.ex +++ b/lib/cadet_web/admin_controllers/admin_stories_controller.ex @@ -12,7 +12,7 @@ defmodule CadetWeb.AdminStoriesController do case result do {:ok, _story} -> - conn |> put_status(200) |> text('') + conn |> put_status(200) |> text("") {:error, {status, message}} -> conn @@ -29,7 +29,7 @@ defmodule CadetWeb.AdminStoriesController do case result do {:ok, _story} -> - conn |> put_status(200) |> text('') + conn |> put_status(200) |> text("") {:error, {status, message}} -> conn @@ -43,7 +43,7 @@ defmodule CadetWeb.AdminStoriesController do case result do {:ok, _nil} -> - conn |> put_status(204) |> text('') + conn |> put_status(204) |> text("") {:error, {status, message}} -> conn From 0f1e535470b16a7c331b92748f93811b5261ef1d Mon Sep 17 00:00:00 2001 From: heyzec <61238538+heyzec@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:24:06 +0800 Subject: [PATCH 04/10] move function "clauses with the same name and arity (number of arguments) should be grouped together" --- lib/cadet_web/controllers/answer_controller.ex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/cadet_web/controllers/answer_controller.ex b/lib/cadet_web/controllers/answer_controller.ex index 7e87ab22e..c4c99f03f 100644 --- a/lib/cadet_web/controllers/answer_controller.ex +++ b/lib/cadet_web/controllers/answer_controller.ex @@ -38,6 +38,10 @@ defmodule CadetWeb.AnswerController do end end + def submit(conn, _params) do + send_resp(conn, :bad_request, "Missing or invalid parameter(s)") + end + def check_last_modified(conn, %{ "questionid" => question_id, "lastModifiedAt" => last_modified_at @@ -79,10 +83,6 @@ defmodule CadetWeb.AnswerController do end end - def submit(conn, _params) do - send_resp(conn, :bad_request, "Missing or invalid parameter(s)") - end - swagger_path :submit do post("/assessments/question/{questionId}/answer") From 102a2a335a9a14bcc6a491f4ec6f5761d4cda302 Mon Sep 17 00:00:00 2001 From: heyzec <61238538+heyzec@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:27:36 +0800 Subject: [PATCH 05/10] make range explicit "10..0 has a default step of -1, please write 10..0//-1 instead" --- test/cadet/assessments/assessments_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cadet/assessments/assessments_test.exs b/test/cadet/assessments/assessments_test.exs index 6953144c3..81637be33 100644 --- a/test/cadet/assessments/assessments_test.exs +++ b/test/cadet/assessments/assessments_test.exs @@ -3142,7 +3142,7 @@ defmodule Cadet.AssessmentsTest do defp expected_top_relative_scores(top_x, token_divider) do # "return 0;" in the factory has 3 token - 10..0 + 10..0//-1 |> Enum.to_list() |> Enum.map(fn score -> 10 * score - :math.pow(2, 3 / token_divider) end) |> Enum.take(top_x) From 2792420724d0a3d74447c6476bebffef4e363b5e Mon Sep 17 00:00:00 2001 From: heyzec <61238538+heyzec@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:30:49 +0800 Subject: [PATCH 06/10] remove alias "unused alias" --- .../admin_controllers/admin_assessments_controller_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cadet_web/admin_controllers/admin_assessments_controller_test.exs b/test/cadet_web/admin_controllers/admin_assessments_controller_test.exs index cfd590925..3f095dfcc 100644 --- a/test/cadet_web/admin_controllers/admin_assessments_controller_test.exs +++ b/test/cadet_web/admin_controllers/admin_assessments_controller_test.exs @@ -5,7 +5,7 @@ defmodule CadetWeb.AdminAssessmentsControllerTest do import Ecto.Query import ExUnit.CaptureLog - alias Cadet.{Assessments, Repo} + alias Cadet.Repo alias Cadet.Accounts.CourseRegistration alias Cadet.Assessments.{Assessment, Submission} alias Cadet.Test.XMLGenerator From 50aed9f26dc5b57e261009beb305f5ced9410738 Mon Sep 17 00:00:00 2001 From: heyzec <61238538+heyzec@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:31:04 +0800 Subject: [PATCH 07/10] rename unused variables "warning: variable "XXX" is unused" --- lib/cadet/accounts/teams.ex | 6 +++--- test/cadet/assessments/assessments_test.exs | 2 +- test/cadet_web/plug/rate_limiter_test.exs | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/cadet/accounts/teams.ex b/lib/cadet/accounts/teams.ex index f8248fd68..75b0eee3d 100644 --- a/lib/cadet/accounts/teams.ex +++ b/lib/cadet/accounts/teams.ex @@ -64,7 +64,7 @@ defmodule Cadet.Accounts.Teams do true -> Enum.reduce_while(attrs["student_ids"], {:ok, nil}, fn team_attrs, {:ok, _} -> - student_ids = Enum.map(team_attrs, &Map.get(&1, "userId")) + _student_ids = Enum.map(team_attrs, &Map.get(&1, "userId")) {:ok, team} = %Team{} @@ -105,7 +105,7 @@ defmodule Cadet.Accounts.Teams do ids = Enum.map(team, &Map.get(&1, "userId")) unique_ids_count = ids |> Enum.uniq() |> Enum.count() - all_ids_distinct = unique_ids_count == Enum.count(ids) + _all_ids_distinct = unique_ids_count == Enum.count(ids) student_already_in_team?(-1, ids, assessment_id) end) @@ -229,7 +229,7 @@ defmodule Cadet.Accounts.Teams do """ def update_team(team = %Team{}, new_assessment_id, student_ids) do - old_assessment_id = team.assessment_id + _old_assessment_id = team.assessment_id team_id = team.id new_student_ids = Enum.map(hd(student_ids), fn student -> Map.get(student, "userId") end) diff --git a/test/cadet/assessments/assessments_test.exs b/test/cadet/assessments/assessments_test.exs index 81637be33..41814efe3 100644 --- a/test/cadet/assessments/assessments_test.exs +++ b/test/cadet/assessments/assessments_test.exs @@ -2223,7 +2223,7 @@ defmodule Cadet.AssessmentsTest do test "limit submisssions 2", %{ course_regs: %{avenger1_cr: avenger}, - assessments: assessments + assessments: _assessments } do {_, res} = Assessments.submissions_by_grader_for_index(avenger, %{ diff --git a/test/cadet_web/plug/rate_limiter_test.exs b/test/cadet_web/plug/rate_limiter_test.exs index 0820295b2..3de95a596 100644 --- a/test/cadet_web/plug/rate_limiter_test.exs +++ b/test/cadet_web/plug/rate_limiter_test.exs @@ -22,7 +22,7 @@ defmodule CadetWeb.Plugs.RateLimiterTest do end test "rate limit exceeded", %{conn: conn} do - key = "user:1" + _ = "user:1" # Simulate exceeding the rate limit for _ <- 1..RateLimiter.rate_limit() do From 088fa96382fddfe477272ef691d441f9f41c910e Mon Sep 17 00:00:00 2001 From: heyzec <61238538+heyzec@users.noreply.github.com> Date: Tue, 1 Jul 2025 22:47:53 +0800 Subject: [PATCH 08/10] remove choices from validate_required """ warning: attempting to determine the presence of embed_many field :choices with validate_required/3 ... which has no effect. You can pass the :required option to Ecto.Changeset.cast_embed/3 to achieve this. """ --- lib/cadet/assessments/question_types/mcq_question.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cadet/assessments/question_types/mcq_question.ex b/lib/cadet/assessments/question_types/mcq_question.ex index b99a5031f..f6ede3a73 100644 --- a/lib/cadet/assessments/question_types/mcq_question.ex +++ b/lib/cadet/assessments/question_types/mcq_question.ex @@ -20,7 +20,7 @@ defmodule Cadet.Assessments.QuestionTypes.MCQQuestion do |> cast(params, @required_fields) |> cast_embed(:choices, with: &MCQChoice.changeset/2, required: true) |> validate_one_correct_answer - |> validate_required(@required_fields ++ ~w(choices)a) + |> validate_required(@required_fields) end defp validate_one_correct_answer(changeset) do From 8c24370d1e53b913d66115814b6051d529e69093 Mon Sep 17 00:00:00 2001 From: heyzec <61238538+heyzec@users.noreply.github.com> Date: Tue, 1 Jul 2025 23:15:38 +0800 Subject: [PATCH 09/10] delete unused variables instead --- lib/cadet/accounts/teams.ex | 4 ---- test/cadet_web/plug/rate_limiter_test.exs | 2 -- 2 files changed, 6 deletions(-) diff --git a/lib/cadet/accounts/teams.ex b/lib/cadet/accounts/teams.ex index 75b0eee3d..12f1e0e7e 100644 --- a/lib/cadet/accounts/teams.ex +++ b/lib/cadet/accounts/teams.ex @@ -64,8 +64,6 @@ defmodule Cadet.Accounts.Teams do true -> Enum.reduce_while(attrs["student_ids"], {:ok, nil}, fn team_attrs, {:ok, _} -> - _student_ids = Enum.map(team_attrs, &Map.get(&1, "userId")) - {:ok, team} = %Team{} |> Team.changeset(attrs) @@ -105,7 +103,6 @@ defmodule Cadet.Accounts.Teams do ids = Enum.map(team, &Map.get(&1, "userId")) unique_ids_count = ids |> Enum.uniq() |> Enum.count() - _all_ids_distinct = unique_ids_count == Enum.count(ids) student_already_in_team?(-1, ids, assessment_id) end) @@ -229,7 +226,6 @@ defmodule Cadet.Accounts.Teams do """ def update_team(team = %Team{}, new_assessment_id, student_ids) do - _old_assessment_id = team.assessment_id team_id = team.id new_student_ids = Enum.map(hd(student_ids), fn student -> Map.get(student, "userId") end) diff --git a/test/cadet_web/plug/rate_limiter_test.exs b/test/cadet_web/plug/rate_limiter_test.exs index 3de95a596..d5337f711 100644 --- a/test/cadet_web/plug/rate_limiter_test.exs +++ b/test/cadet_web/plug/rate_limiter_test.exs @@ -22,8 +22,6 @@ defmodule CadetWeb.Plugs.RateLimiterTest do end test "rate limit exceeded", %{conn: conn} do - _ = "user:1" - # Simulate exceeding the rate limit for _ <- 1..RateLimiter.rate_limit() do conn = RateLimiter.call(conn, %{}) From 0f6998a003e16d2acbaa43fb400f991984f4107f Mon Sep 17 00:00:00 2001 From: Richard Dominick <34370238+RichDom2185@users.noreply.github.com> Date: Wed, 2 Jul 2025 00:31:13 +0800 Subject: [PATCH 10/10] Revert "remove choices from validate_required" This reverts commit 088fa96382fddfe477272ef691d441f9f41c910e. --- lib/cadet/assessments/question_types/mcq_question.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cadet/assessments/question_types/mcq_question.ex b/lib/cadet/assessments/question_types/mcq_question.ex index f6ede3a73..b99a5031f 100644 --- a/lib/cadet/assessments/question_types/mcq_question.ex +++ b/lib/cadet/assessments/question_types/mcq_question.ex @@ -20,7 +20,7 @@ defmodule Cadet.Assessments.QuestionTypes.MCQQuestion do |> cast(params, @required_fields) |> cast_embed(:choices, with: &MCQChoice.changeset/2, required: true) |> validate_one_correct_answer - |> validate_required(@required_fields) + |> validate_required(@required_fields ++ ~w(choices)a) end defp validate_one_correct_answer(changeset) do