-
-
Notifications
You must be signed in to change notification settings - Fork 6
chore(mega-linter): apply linters automatic fixes #246
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
liblaf-bot
wants to merge
1
commit into
main
Choose a base branch
from
mega-linter-fix/main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
✅
|
Descriptor | Linter | Files | Fixed | Errors | Warnings | Elapsed time |
---|---|---|---|---|---|---|
✅ BASH | shellcheck | 3 | 0 | 0 | 0.05s | |
✅ BASH | shfmt | 3 | 0 | 0 | 0 | 0.01s |
jscpd | yes | 1 | no | 1.94s | ||
jsonlint | 10 | 1 | 0 | 0.17s | ||
✅ JSON | prettier | 10 | 0 | 0 | 0 | 0.36s |
✅ JSON | v8r | 10 | 0 | 0 | 4.27s | |
markdownlint | 3 | 0 | 46 | 0 | 0.84s | |
ruff | yes | yes | 100 | no | 1.71s | |
✅ SPELL | cspell | 47 | 0 | 0 | 3.75s | |
✅ YAML | prettier | 3 | 0 | 0 | 0 | 0.47s |
✅ YAML | v8r | 3 | 0 | 0 | 4.55s | |
✅ YAML | yamllint | 3 | 0 | 0 | 0.46s |
Detailed Issues
⚠️ COPYPASTE / jscpd - 1 error
Clone found (python):
- src/thu_learn_downloader/download/downloader.py [162:10 - 173:5] (11 lines, 93 tokens)
src/thu_learn_downloader/download/downloader.py [117:13 - 128:3]
┌────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ bash │ 11 │ 246 │ 1586 │ 0 │ 0 (0%) │ 0 (0%) │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ python │ 20 │ 1305 │ 10048 │ 1 │ 11 (0.84%) │ 93 (0.93%) │
├────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total: │ 31 │ 1551 │ 11634 │ 1 │ 11 (0.71%) │ 93 (0.8%) │
└────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 1 clones.
HTML report saved to megalinter-reports/copy-paste/html/
ERROR: jscpd found too many duplicates (0.71%) over threshold (0%)
Error: ERROR: jscpd found too many duplicates (0.71%) over threshold (0%)
at ThresholdReporter.report (/node-deps/node_modules/@jscpd/finder/dist/index.js:612:13)
at /node-deps/node_modules/@jscpd/finder/dist/index.js:110:18
at Array.forEach (<anonymous>)
at /node-deps/node_modules/@jscpd/finder/dist/index.js:109:22
at async /node-deps/node_modules/jscpd/dist/jscpd.js:351:5
⚠️ JSON / jsonlint - 1 error
File: .vscode/settings.json
Parse error on line 17, column 5:
....customTags": [ // ref: <https://squ...
----------------------^
Unexpected token "/"
⚠️ MARKDOWN / markdownlint - 46 errors
CHANGELOG.md:11 MD024/no-duplicate-heading Multiple headings with the same content [Context: "💥 BREAKING CHANGES"]
CHANGELOG.md:32 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:37 MD024/no-duplicate-heading Multiple headings with the same content [Context: "⬆️ Dependencies"]
CHANGELOG.md:65 MD024/no-duplicate-heading Multiple headings with the same content [Context: "👷 Build System"]
CHANGELOG.md:84 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:91 MD024/no-duplicate-heading Multiple headings with the same content [Context: "✨ Features"]
CHANGELOG.md:99 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🔧 Continuous Integration"]
CHANGELOG.md:105 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:109 MD024/no-duplicate-heading Multiple headings with the same content [Context: "👷 Build System"]
CHANGELOG.md:115 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:121 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:127 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:133 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:137 MD024/no-duplicate-heading Multiple headings with the same content [Context: "📝 Documentation"]
CHANGELOG.md:141 MD024/no-duplicate-heading Multiple headings with the same content [Context: "👷 Build System"]
CHANGELOG.md:145 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🔧 Continuous Integration"]
CHANGELOG.md:151 MD024/no-duplicate-heading Multiple headings with the same content [Context: "📝 Documentation"]
CHANGELOG.md:156 MD024/no-duplicate-heading Multiple headings with the same content [Context: "👷 Build System"]
CHANGELOG.md:162 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:168 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:174 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:178 MD024/no-duplicate-heading Multiple headings with the same content [Context: "📝 Documentation"]
CHANGELOG.md:183 MD024/no-duplicate-heading Multiple headings with the same content [Context: "👷 Build System"]
CHANGELOG.md:189 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🔧 Continuous Integration"]
CHANGELOG.md:195 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:199 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🔧 Continuous Integration"]
CHANGELOG.md:205 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:209 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🔧 Continuous Integration"]
CHANGELOG.md:215 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:219 MD024/no-duplicate-heading Multiple headings with the same content [Context: "📝 Documentation"]
CHANGELOG.md:223 MD024/no-duplicate-heading Multiple headings with the same content [Context: "👷 Build System"]
CHANGELOG.md:230 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:236 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:244 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:250 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:257 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:261 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🔧 Continuous Integration"]
CHANGELOG.md:268 MD024/no-duplicate-heading Multiple headings with the same content [Context: "📝 Documentation"]
CHANGELOG.md:274 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:280 MD024/no-duplicate-heading Multiple headings with the same content [Context: "✨ Features"]
CHANGELOG.md:286 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🐛 Bug Fixes"]
CHANGELOG.md:294 MD024/no-duplicate-heading Multiple headings with the same content [Context: "📝 Documentation"]
CHANGELOG.md:304 MD024/no-duplicate-heading Multiple headings with the same content [Context: "👷 Build System"]
CHANGELOG.md:308 MD024/no-duplicate-heading Multiple headings with the same content [Context: "🔧 Continuous Integration"]
docs/README.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "{% include "../README.md" %}"]
README.md:15 MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
⚠️ PYTHON / ruff - 100 errors
TRY301 Abstract `raise` to an inner function
--> src/thu_learn_downloader/client/client.py:33:17
|
31 | token = self.cookies.get("XSRF-TOKEN")
32 | if token is None:
33 | raise KeyError("XSRF-TOKEN not found in cookies")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
34 | return token
35 | except KeyError as e:
|
TRY003 Avoid specifying long messages outside the exception class
--> src/thu_learn_downloader/client/client.py:33:23
|
31 | token = self.cookies.get("XSRF-TOKEN")
32 | if token is None:
33 | raise KeyError("XSRF-TOKEN not found in cookies")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
34 | return token
35 | except KeyError as e:
|
EM101 Exception must not use a string literal, assign to variable first
--> src/thu_learn_downloader/client/client.py:33:32
|
31 | token = self.cookies.get("XSRF-TOKEN")
32 | if token is None:
33 | raise KeyError("XSRF-TOKEN not found in cookies")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
34 | return token
35 | except KeyError as e:
|
help: Assign to variable; remove string literal
TRY300 Consider moving this statement to an `else` block
--> src/thu_learn_downloader/client/client.py:34:13
|
32 | if token is None:
33 | raise KeyError("XSRF-TOKEN not found in cookies")
34 | return token
| ^^^^^^^^^^^^
35 | except KeyError as e:
36 | print(f"无法获取CSRF token: {e}")
|
TRY002 Create your own exception
--> src/thu_learn_downloader/client/client.py:38:19
|
36 | print(f"无法获取CSRF token: {e}")
37 | print(f"当前cookies: {list(self.cookies.keys())}")
38 | raise Exception("登录状态可能已失效,请重新登录") from e
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
EM101 Exception must not use a string literal, assign to variable first
--> src/thu_learn_downloader/client/client.py:38:29
|
36 | print(f"无法获取CSRF token: {e}")
37 | print(f"当前cookies: {list(self.cookies.keys())}")
38 | raise Exception("登录状态可能已失效,请重新登录") from e
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
help: Assign to variable; remove string literal
RUF001 String contains ambiguous `,` (FULLWIDTH COMMA). Did you mean `,` (COMMA)?
--> src/thu_learn_downloader/client/client.py:38:39
|
36 | print(f"无法获取CSRF token: {e}")
37 | print(f"当前cookies: {list(self.cookies.keys())}")
38 | raise Exception("登录状态可能已失效,请重新登录") from e
| ^^
|
ANN201 Missing return type annotation for public function `get_course_issues`
--> src/thu_learn_downloader/client/course.py:21:5
|
21 | def get_course_issues():
| ^^^^^^^^^^^^^^^^^
22 | """获取课程问题汇总"""
23 | return _course_issues.copy()
|
help: Add return type annotation
D415 First line should end with a period, question mark, or exclamation point
--> src/thu_learn_downloader/client/course.py:22:5
|
21 | def get_course_issues():
22 | """获取课程问题汇总"""
| ^^^^^^^^^^^^^^^^^^^^^^
23 | return _course_issues.copy()
|
help: Add closing punctuation
ANN201 Missing return type annotation for public function `clear_course_issues`
--> src/thu_learn_downloader/client/course.py:26:5
|
26 | def clear_course_issues():
| ^^^^^^^^^^^^^^^^^^^
27 | """清空课程问题记录"""
28 | global _course_issues
|
help: Add return type annotation: `None`
D415 First line should end with a period, question mark, or exclamation point
--> src/thu_learn_downloader/client/course.py:27:5
|
26 | def clear_course_issues():
27 | """清空课程问题记录"""
| ^^^^^^^^^^^^^^^^^^^^^^
28 | global _course_issues
29 | _course_issues = {
|
help: Add closing punctuation
PLW0603 Using the global statement to update `_course_issues` is discouraged
--> src/thu_learn_downloader/client/course.py:28:12
|
26 | def clear_course_issues():
27 | """清空课程问题记录"""
28 | global _course_issues
| ^^^^^^^^^^^^^^
29 | _course_issues = {
30 | "missing_documents": [],
|
RUF003 Comment contains ambiguous `,` (FULLWIDTH COMMA). Did you mean `,` (COMMA)?
--> src/thu_learn_downloader/client/course.py:48:15
|
46 | @property
47 | def document_classes(self) -> Sequence[DocumentClass]:
48 | # 异常处理,记录问题
| ^^
49 | try:
50 | response = self.client.get_with_token(
|
F841 Local variable `json_data` is assigned to but never used
--> src/thu_learn_downloader/client/course.py:54:13
|
52 | params={"wlkcid": self.id},
53 | )
54 | json_data = response.json()["object"]["rows"]
| ^^^^^^^^^
55 |
56 | return [
|
help: Remove assignment to unused variable `json_data`
BLE001 Do not catch blind exception: `Exception`
--> src/thu_learn_downloader/client/course.py:61:16
|
59 | ]
60 |
61 | except Exception as e:
| ^^^^^^^^^
62 | _course_issues["missing_document_classes"].append(
63 | {"course": self.name, "course_id": self.id, "reason": f"异常: {e!s}"}
|
TRY300 Consider moving this statement to an `else` block
--> src/thu_learn_downloader/client/course.py:82:13
|
80 | documents.sort(key=lambda document: document.title)
81 | documents.sort(key=lambda document: document.upload_time)
82 | return documents
| ^^^^^^^^^^^^^^^^
83 |
84 | except Exception as e:
|
BLE001 Do not catch blind exception: `Exception`
--> src/thu_learn_downloader/client/course.py:84:16
|
82 | return documents
83 |
84 | except Exception as e:
| ^^^^^^^^^
85 | _course_issues["missing_documents"].append(
86 | {"course": self.name, "course_id": self.id, "reason": f"异常: {e!s}"}
|
RUF003 Comment contains ambiguous `,` (FULLWIDTH COMMA). Did you mean `,` (COMMA)?
--> src/thu_learn_downloader/client/course.py:113:27
|
111 | ]
112 |
113 | # 如果所有作业API都没有返回数据,记录该课程
| ^^
114 | if not all_homeworks:
115 | _course_issues["missing_homeworks"].append(
|
RUF003 Comment contains ambiguous `,` (FULLWIDTH COMMA). Did you mean `,` (COMMA)?
--> src/thu_learn_downloader/client/course.py:127:27
|
125 | # 检查响应状态
126 | if resp.status_code != 200:
127 | # 作业API失败时,只在所有作业API都失败时才记录
| ^^
128 | return []
|
BLE001 Do not catch blind exception: `Exception`
--> src/thu_learn_downloader/client/course.py:148:16
|
146 | ]
147 |
148 | except Exception:
| ^^^^^^^^^
149 | return []
|
TID252 Prefer absolute imports over relative imports from parent modules
--> src/thu_learn_downloader/client/learn.py:18:9
|
17 | def login(self) -> None:
18 | from ..login.browser import login_with_browser
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
19 |
20 | try:
|
help: Replace relative imports from parent modules with absolute imports
RUF003 Comment contains ambiguous `,` (FULLWIDTH COMMA). Did you mean `,` (COMMA)?
--> src/thu_learn_downloader/client/learn.py:27:23
|
25 | self.client.cookies[name] = value
26 |
27 | # 验证登录是否成功,尝试访问课程页面
| ^^
28 | response = self.client.get(
29 | url=url.make_url(path="/f/wlxt/index/course/student/")
|
RUF001 String contains ambiguous `!` (FULLWIDTH EXCLAMATION MARK). Did you mean `!` (EXCLAMATION MARK)?
--> src/thu_learn_downloader/client/learn.py:32:31
|
30 | )
31 | if response.status_code == 200:
32 | print("浏览器登录成功!")
| ^^
33 | else:
34 | raise Exception("登录验证失败,请重试")
|
TRY301 Abstract `raise` to an inner function
--> src/thu_learn_downloader/client/learn.py:34:17
|
32 | print("浏览器登录成功!")
33 | else:
34 | raise Exception("登录验证失败,请重试")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
35 |
36 | except Exception as e:
|
TRY002 Create your own exception
--> src/thu_learn_downloader/client/learn.py:34:23
|
32 | print("浏览器登录成功!")
33 | else:
34 | raise Exception("登录验证失败,请重试")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
35 |
36 | except Exception as e:
|
EM101 Exception must not use a string literal, assign to variable first
--> src/thu_learn_downloader/client/learn.py:34:33
|
32 | print("浏览器登录成功!")
33 | else:
34 | raise Exception("登录验证失败,请重试")
| ^^^^^^^^^^^^^^^^^^^^^^
35 |
36 | except Exception as e:
|
help: Assign to variable; remove string literal
RUF001 String contains ambiguous `,` (FULLWIDTH COMMA). Did you mean `,` (COMMA)?
--> src/thu_learn_downloader/client/learn.py:34:40
|
32 | print("浏览器登录成功!")
33 | else:
34 | raise Exception("登录验证失败,请重试")
| ^^
35 |
36 | except Exception as e:
|
BLE001 Do not catch blind exception: `Exception`
--> src/thu_learn_downloader/client/learn.py:36:16
|
34 | raise Exception("登录验证失败,请重试")
35 |
36 | except Exception as e:
| ^^^^^^^^^
37 | print(f"浏览器登录失败: {e}")
|
RUF003 Comment contains
(Truncated to 10000 characters out of 35335)
See detailed reports in MegaLinter artifacts
liblaf
approved these changes
Sep 2, 2025
1531b9e
to
296a6ab
Compare
296a6ab
to
bd278b0
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
✅⚠️ MegaLinter analysis: Success with warnings
Detailed Issues
See detailed reports in MegaLinter artifacts