From b91874355c8ba70dd1808df410e71ead73b941dd Mon Sep 17 00:00:00 2001 From: Samantaz Fox Date: Thu, 20 Jan 2022 22:25:01 +0100 Subject: [PATCH] Add Ameba static code analysis tool to dev shards --- .ameba.yml | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ shard.lock | 3 ++ shard.yml | 3 ++ 3 files changed, 98 insertions(+) create mode 100644 .ameba.yml 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)) diff --git a/shard.lock b/shard.lock index ab9d97f7..be4333c1 100644 --- a/shard.lock +++ b/shard.lock @@ -48,3 +48,6 @@ shards: git: https://github.com/crystal-lang/crystal-sqlite3.git version: 0.18.0 + ameba: + git: https://github.com/crystal-ameba/ameba.git + version: 0.14.3 diff --git a/shard.yml b/shard.yml index fdb27c0f..bf382ec3 100644 --- a/shard.yml +++ b/shard.yml @@ -33,6 +33,9 @@ development_dependencies: spectator: github: icy-arctic-fox/spectator version: ~> 0.10.4 + ameba: + github: crystal-ameba/ameba + version: ~> 0.14.3 crystal: ">= 1.0.0, < 2.0.0"