summaryrefslogtreecommitdiffstats
path: root/.ameba.yml
diff options
context:
space:
mode:
authorSamantaz Fox <coding@samantaz.fr>2022-01-20 22:25:01 +0100
committerSamantaz Fox <coding@samantaz.fr>2022-01-20 22:25:01 +0100
commitb91874355c8ba70dd1808df410e71ead73b941dd (patch)
treea22cd110b781fb77170903fd6302cb7df6c33fa0 /.ameba.yml
parent32ae38b93373466eab8bff6aa2b0e56ac82a70ec (diff)
downloadinvidious-b91874355c8ba70dd1808df410e71ead73b941dd.tar.gz
invidious-b91874355c8ba70dd1808df410e71ead73b941dd.tar.bz2
invidious-b91874355c8ba70dd1808df410e71ead73b941dd.zip
Add Ameba static code analysis tool to dev shards
Diffstat (limited to '.ameba.yml')
-rw-r--r--.ameba.yml92
1 files changed, 92 insertions, 0 deletions
diff --git a/.ameba.yml b/.ameba.yml
new file mode 100644
index 00000000..247705e8
--- /dev/null
+++ b/.ameba.yml
@@ -0,0 +1,92 @@
+#
+# Lint
+#
+
+# Exclude assigns for ECR files
+Lint/UselessAssign:
+ Excluded:
+ - src/invidious.cr
+ - src/invidious/helpers/errors.cr
+ - src/invidious/routes/**/*.cr
+
+# Ignore false negative (if !db.query_one?...)
+Lint/UnreachableCode:
+ Excluded:
+ - src/invidious/database/base.cr
+
+# Ignore shadowed variable `key` (it works for now, and that's
+# a sensitive part of the code)
+Lint/ShadowingOuterLocalVar:
+ Excluded:
+ - src/invidious/helpers/tokens.cr
+
+
+#
+# Style
+#
+
+Style/RedundantBegin:
+ Enabled: false
+
+Style/RedundantReturn:
+ Enabled: false
+
+
+#
+# Metrics
+#
+
+# Ignore function complexity (number of if/else & case/when branches)
+# For some functions that can hardly be simplified for now
+Metrics/CyclomaticComplexity:
+ Excluded:
+ # get_about_info(ucid, locale) => [17/10]
+ - src/invidious/channels/about.cr
+
+ # fetch_channel_community(ucid, continuation, ...) => [34/10]
+ - src/invidious/channels/community.cr
+
+ # create_notification_stream(env, topics, connection_channel) => [14/10]
+ - src/invidious/helpers/helpers.cr:84:5
+
+ # get_index(plural_form, count) => [25/10]
+ - src/invidious/helpers/i18next.cr
+
+ # call(context) => [18/10]
+ - src/invidious/helpers/static_file_handler.cr
+
+ # show(env) => [38/10]
+ - src/invidious/routes/embed.cr
+
+ # get_video_playback(env) => [45/10]
+ - src/invidious/routes/video_playback.cr
+
+ # handle(env) => [40/10]
+ - src/invidious/routes/watch.cr
+
+ # playlist_ajax(env) => [24/10]
+ - src/invidious/routes/playlists.cr
+
+ # fetch_youtube_comments(id, cursor, ....) => [40/10]
+ # template_youtube_comments(comments, locale, ...) => [16/10]
+ # content_to_comment_html(content) => [14/10]
+ - src/invidious/comments.cr
+
+ # to_json(locale, json) => [21/10]
+ # extract_video_info(video_id, ...) => [44/10]
+ # process_video_params(query, preferences) => [20/10]
+ - src/invidious/videos.cr
+
+ # produce_search_params(page, sort, ...) => [29/10]
+ # process_search_query(query, page, ...) => [14/10]
+ - src/invidious/search.cr
+
+
+
+#src/invidious/playlists.cr:327:5
+#[C] Metrics/CyclomaticComplexity: Cyclomatic complexity too high [19/10]
+# fetch_playlist(plid : String)
+
+#src/invidious/playlists.cr:436:5
+#[C] Metrics/CyclomaticComplexity: Cyclomatic complexity too high [11/10]
+# extract_playlist_videos(initial_data : Hash(String, JSON::Any))