diff --git a/.github/styles/config/vocabularies/Codacy/accept.txt b/.github/styles/config/vocabularies/Codacy/accept.txt index 598b56e20f..e1b950b4b9 100644 --- a/.github/styles/config/vocabularies/Codacy/accept.txt +++ b/.github/styles/config/vocabularies/Codacy/accept.txt @@ -9,6 +9,7 @@ Bandit Bitbucket Bitnami Brakeman +Bundler bundler-audit Checkov Checkstyle @@ -54,6 +55,7 @@ jscpd JSHint JSP Junie +lockfile markdownlint monorepo namespace @@ -64,6 +66,7 @@ Opengrep PHP_CodeSniffer PHP CS Fixer PHPUnit +pipenv plaintext PMD Promtail @@ -87,6 +90,7 @@ ShellCheck SonarC# SonarVB SpotBugs +SQLFluff SQLint Staticcheck Stylelint diff --git a/docs/getting-started/supported-languages-and-tools.md b/docs/getting-started/supported-languages-and-tools.md index 6b37a2ba42..58fa5f888d 100644 --- a/docs/getting-started/supported-languages-and-tools.md +++ b/docs/getting-started/supported-languages-and-tools.md @@ -10,7 +10,7 @@ Codacy uses industry-leading tools to perform automatic static code analysis ove - **For cloud infrastructure-as-code platforms**, Codacy provides static analysis and secret detection to enforce security and compliance best practices. -The table below lists all languages that Codacy supports and the corresponding tools that Codacy uses to analyze your source code. Besides this, Codacy uses [cloc](https://github.com/kentcdodds/cloc) to calculate the source lines of code for all supported languages and supports multiple [code coverage report formats](../coverage-reporter/index.md#generating-coverage). +The sections below group the tools that Codacy uses by scan type. Besides this, Codacy uses [cloc](https://github.com/kentcdodds/cloc) to calculate the source lines of code for all supported languages and supports multiple [code coverage report formats](../coverage-reporter/index.md#generating-coverage). +## Complexity + +See how Codacy calculates [complexity](../faq/code-analysis/which-metrics-does-codacy-calculate.md#complexity). + +| Language | Tools | +|---|---| +| C | Lizard | +| C++ | Lizard | +| C# | Lizard | +| Go | Lizard | +| Java | Lizard | +| JavaScript | Lizard | +| Kotlin | detekt [^different-tools] | +| Kubernetes | Lizard | +| Objective-C | Lizard | +| PHP | Lizard | +| Python | Lizard | +| Ruby | Lizard | +| Rust | Lizard | +| Scala | Lizard | +| Swift | Lizard | +| TypeScript | Lizard | ## Docker images of supported tools @@ -748,229 +307,69 @@ Codacy adds support for new languages and tools by using [a Docker image to run The following table lists the Codacy GitHub repositories corresponding to each supported tool. Use these repositories to check the extra plugins supported by each tool or to submit GitHub issues related to each tool. To learn more about the tool versions used by Codacy, [see the latest release notes](../release-notes/index.md). -
1: This tool doesn't support [custom file extensions](../repositories-configure/languages.md#configuring-file-extensions). -2: Currently, only YAML file scanning is supported on this platform. -3: Supported as a [client-side tool](../repositories-configure/local-analysis/client-side-tools.md). -4: Currently, Cppcheck only supports the MISRA guidelines for C. -5: Currently, Codacy only supports including the packages [lints](https://pub.dev/packages/lints) and [flutter_lints](https://pub.dev/packages/flutter_lints) on dartanalyzer configuration files. -6: Doesn't calculate [the number of methods and the complexity per method](../repositories/files.md#file-details) for each file. -7: Due to licensing limitations, Codacy doesn't support the latest version of Brakeman. To analyze your Ruby code for the latest security vulnerabilities, use [Opengrep](https://github.com/opengrep/opengrep), which provides comprehensive and up-to-date security scanning. -8: Supports [reporting warnings or errors](https://realm.github.io/SwiftLint/cyclomatic_complexity.html) on functions above specific complexity thresholds. Enable the rule **Cyclomatic Complexity** on the [Code patterns page](../repositories-configure/configuring-code-patterns.md), or use a [configuration file](https://realm.github.io/SwiftLint/index.html#configuration) to customize the thresholds. -9: Requires the [sbt-dependency-lock](https://github.com/stringbean/sbt-dependency-lock) plugin for generating the lockfile. -10: Codacy may use a different version of this tool for measuring complexity and duplication. -11: Malicious packages identified in the [OpenSSF Malicious Packages database](https://github.com/ossf/malicious-packages). -🔧: Supports [suggesting fixes](../repositories-configure/integrations/github-integration.md#suggest-fixes) for identified issues. +| Tool name | Codacy GitHub repository | +|---|---| +| AgentLinter | codacy/codacy-agentlinter | +| aligncheck [^client-side] | codacy/codacy-aligncheck | +| Ameba | codacy/codacy-ameba | +| Bandit | codacy/codacy-bandit | +| BiomeJS | codacy/codacy-biomejs | +| Brakeman [^opengrep-brakeman] | codacy/codacy-brakeman | +| Checkov | codacy/codacy-checkov | +| Checkstyle | codacy/codacy-checkstyle | +| Clang-Tidy [^client-side] | codacy/codacy-clang-tidy | +| Codacy Scalameta Pro | codacy/codacy-scalameta | +| CodeNarc | codacy/codacy-codenarc | +| CoffeeLint | codacy/codacy-coffeelint | +| Cppcheck [^cppcheck-misra] | codacy/codacy-cppcheck | +| Credo | codacy/codacy-credo | +| dartanalyzer [^dart-limitations] | codacy/codacy-dartanalyzer | +| deadcode [^client-side] | codacy/codacy-deadcode | +| detekt | codacy/codacy-detekt | +| ESLint [^complexity-limitations] | codacy/codacy-eslint | +| Flawfinder | codacy/codacy-flawfinder | +| Gosec [^client-side] | codacy/codacy-gosec | +| Hadolint | codacy/codacy-hadolint | +| Jackson Linter | codacy/codacy-jackson-linter | +| Lizard | codacy/codacy-lizard | +| markdownlint | codacy/codacy-markdownlint | +| PHP CS Fixer | codacy/codacy-php-cs-fixer | +| PHP_CodeSniffer | codacy/codacy-codesniffer | +| PHP Mess Detector | codacy/codacy-phpmd | +| PMD [^complexity-limitations] | codacy/codacy-pmd7 | +| Prospector | codacy/codacy-prospector | +| PSScriptAnalyser | codacy/codacy-psscriptanalyzer | +| Pylint | codacy/codacy-pylint-python3 | +| remark-lint | codacy/codacy-remark-lint | +| Revive | codacy/codacy-gorevive | +| RuboCop [^complexity-limitations] | codacy/codacy-rubocop | +| Ruff | codacy/codacy-ruff | +| Scalastyle | codacy/codacy-scalastyle | +| Opengrep [^opengrep] | codacy/codacy-opengrep | +| ShellCheck | codacy/codacy-shellcheck | +| SonarC# | codacy/codacy-sonar-csharp | +| SonarVB | codacy/codacy-sonar-visual-basic | +| Spectral | codacy/codacy-spectral | +| SpotBugs [^client-side] | codacy/codacy-spotbugs | +| SQLint | codacy/codacy-sqlint | +| SQLFluff | codacy/codacy-sqlfluff | +| Staticcheck [^client-side] | codacy/codacy-staticcheck | +| Stylelint | codacy/codacy-stylelint | +| SwiftLint [^complexity-limitations] [^swiftlint-complexity] | codacy/codacy-swiftlint | +| Trivy | codacy/codacy-trivy | +| TSQLLint | codacy/codacy-tsqllint | +| Unity Roslyn Analyzers [^client-side] | codacy/codacy-roslyn | + +[^opengrep]: This tool doesn't support [custom file extensions](../repositories-configure/languages.md#configuring-file-extensions). +[^yaml-only]: Currently, only YAML file scanning is supported on this platform. +[^client-side]: Supported as a [client-side tool](../repositories-configure/local-analysis/client-side-tools.md). +[^cppcheck-misra]: Currently, Cppcheck only supports the MISRA guidelines for C. +[^dart-limitations]: Currently, Codacy only supports including the packages [lints](https://pub.dev/packages/lints) and [flutter_lints](https://pub.dev/packages/flutter_lints) on dartanalyzer configuration files. +[^complexity-limitations]: Doesn't calculate [the number of methods and the complexity per method](../repositories/files.md#file-details) for each file. +[^opengrep-brakeman]: Due to licensing limitations, Codacy doesn't support the latest version of Brakeman. To analyze your Ruby code for the latest security vulnerabilities, use [Opengrep](https://github.com/opengrep/opengrep), which provides comprehensive and up-to-date security scanning. +[^swiftlint-complexity]: Supports [reporting warnings or errors](https://realm.github.io/SwiftLint/cyclomatic_complexity.html) on functions above specific complexity thresholds. Enable the rule **Cyclomatic Complexity** on the [Code patterns page](../repositories-configure/configuring-code-patterns.md), or use a [configuration file](https://realm.github.io/SwiftLint/index.html#configuration) to customize the thresholds. +[^scala-dependencies]: Requires the [sbt-dependency-lock](https://github.com/stringbean/sbt-dependency-lock) plugin for generating the lockfile. +[^different-tools]: Codacy may use a different version of this tool for measuring complexity and duplication. ## See also diff --git a/mkdocs.yml b/mkdocs.yml index e9183585ac..a1f007a47f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -124,6 +124,11 @@ markdown_extensions: - attr_list # Allow collapsible sections without introducing custom JavaScript - pymdownx.details + # Render [^id] / [^id]: as numbered, back-linkable footnotes instead of + # hand-rolled HTML, which several pages used and which + # has no custom styling anywhere in the theme. + # https://python-markdown.github.io/extensions/footnotes/ + - footnotes # Add syntax highlighting to code blocks # https://facelessuser.github.io/pymdown-extensions/extensions/highlight/ - pymdownx.highlight diff --git a/theme/stylesheets/content.css b/theme/stylesheets/content.css index 1f8fd0ffb2..75b6ff39ac 100644 --- a/theme/stylesheets/content.css +++ b/theme/stylesheets/content.css @@ -22,6 +22,19 @@ .md-content__inner > h1 + p { color: var(--docs-text-secondary); font-size: 1.0625rem; line-height: 1.65; } .md-typeset a { color: var(--docs-link); font-weight: 500; text-decoration-thickness: 1px; text-underline-offset: .14em; } .md-typeset a:hover { color: var(--docs-link-hover); } +/* Footnote-marker links inherit sup's browser-default font-size: smaller, + which shrinks the link's hit area to a few px on a side. Pad and pull back + with a matching negative margin so the tap target grows without shifting + surrounding text. Covers both markup orders: the footnotes extension emits + , hand-rolled footnote HTML elsewhere in the docs emits . */ +.md-typeset a sup, .md-typeset sup a { display: inline-block; padding: .35rem; margin: -.35rem; } +/* A footnote referenced from many rows (common on this site's tool-support + tables) gets one back-reference link per usage from the footnotes + extension. Those render one per line instead of flowing inline, so a + footnote used 20+ times turns into a list item several times taller than + the page. Keep only the first jump-back link; the rest point to the same + definition anyway. */ +.md-typeset .footnote-backref ~ .footnote-backref { display: none; } .md-typeset code { padding: .14em .32em; border-radius: var(--docs-radius); background: var(--docs-bg-subtle); color: var(--docs-text); } .md-typeset :not(pre) > code { border: 1px solid var(--docs-border); }