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). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tool nameCodacy GitHub repository
AgentLintercodacy/codacy-agentlinter
aligncheck 3codacy/codacy-aligncheck
Amebacodacy/codacy-ameba
Banditcodacy/codacy-bandit
BiomeJScodacy/codacy-biomejs
Brakeman 7codacy/codacy-brakeman
Checkovcodacy/codacy-checkov
Checkstylecodacy/codacy-checkstyle
Clang-Tidy 3codacy/codacy-clang-tidy
Codacy Scalameta Procodacy/codacy-scalameta
CodeNarccodacy/codacy-codenarc
CoffeeLintcodacy/codacy-coffeelint
Cppcheck 4codacy/codacy-cppcheck
Credocodacy/codacy-credo
dartanalyzer 5codacy/codacy-dartanalyzer
deadcode 3codacy/codacy-deadcode
detektcodacy/codacy-detekt
ESLint 6codacy/codacy-eslint
Flawfindercodacy/codacy-flawfinder
Gosec 3codacy/codacy-gosec
Hadolintcodacy/codacy-hadolint
Jackson Lintercodacy/codacy-jackson-linter
Lizardcodacy/codacy-lizard
markdownlintcodacy/codacy-markdownlint
PHP CS Fixercodacy/codacy-php-cs-fixer
PHP_CodeSniffercodacy/codacy-codesniffer
PHP Mess Detectorcodacy/codacy-phpmd
PMD 6codacy/codacy-pmd7
Prospectorcodacy/codacy-prospector
PSScriptAnalysercodacy/codacy-psscriptanalyzer
Pylintcodacy/codacy-pylint-python3
remark-lintcodacy/codacy-remark-lint
Revivecodacy/codacy-gorevive
RuboCop 6codacy/codacy-rubocop
Ruffcodacy/codacy-ruff
Scalastylecodacy/codacy-scalastyle
Opengrep 1codacy/codacy-opengrep
ShellCheckcodacy/codacy-shellcheck
SonarC#codacy/codacy-sonar-csharp
SonarVBcodacy/codacy-sonar-visual-basic
Spectralcodacy/codacy-spectral
SpotBugs 3codacy/codacy-spotbugs
SQLintcodacy/codacy-sqlint
SQLFluffcodacy/codacy-sqlfluff
Staticcheck 3codacy/codacy-staticcheck
Stylelintcodacy/codacy-stylelint
SwiftLint 6 8codacy/codacy-swiftlint
Trivycodacy/codacy-trivy
TSQLLintcodacy/codacy-tsqllint
Unity Roslyn Analyzers 3codacy/codacy-roslyn
- -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); }