All Projects → gbbr → breakcheck

gbbr / breakcheck

Licence: other
Backwards compatibility linter for Go.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to breakcheck

Format.cmake
💅 Stylize your code! Automatic clang-format and cmake-format targets for CMake.
Stars: ✭ 94 (+42.42%)
Mutual labels:  lint, ci, linter
npm-groovy-lint
Lint, format and auto-fix your Groovy / Jenkinsfile / Gradle files using command line
Stars: ✭ 124 (+87.88%)
Mutual labels:  lint, ci, linter
arduino-lint
Tool to check for problems with Arduino projects
Stars: ✭ 63 (-4.55%)
Mutual labels:  lint, ci, linter
Reviewdog
🐶 Automated code review tool integrated with any code analysis tools regardless of programming language
Stars: ✭ 4,541 (+6780.3%)
Mutual labels:  lint, ci, linter
makefiles
No description or website provided.
Stars: ✭ 23 (-65.15%)
Mutual labels:  lint, ci, linter
Woke
✊ Detect non-inclusive language in your source code.
Stars: ✭ 190 (+187.88%)
Mutual labels:  lint, ci, linter
flexlint
A flexible linter with rules defined by regular expression
Stars: ✭ 19 (-71.21%)
Mutual labels:  lint, linter
actionlint
Static checker for GitHub Actions workflow files
Stars: ✭ 1,385 (+1998.48%)
Mutual labels:  lint, linter
lint-html-with-css
Lint HTML with CSS. A collection of CSS snippets from the hashtag #lintHTMLwithCSS on twitter. These CSS snippets intend to warn developers about common mistakes made in HTML.
Stars: ✭ 35 (-46.97%)
Mutual labels:  lint, linter
therapist
Work out your commitment issues.
Stars: ✭ 29 (-56.06%)
Mutual labels:  lint, linter
litho-lint-rules
Lint rules for Litho by Facebook http://fblitho.com/
Stars: ✭ 14 (-78.79%)
Mutual labels:  lint, linter
KaiZen-OpenApi-Parser
High-performance Parser, Validator, and Java Object Model for OpenAPI 3.x
Stars: ✭ 119 (+80.3%)
Mutual labels:  lint, linter
nano-staged
Tiny tool to run commands for modified, staged, and committed files in a GIT repository.
Stars: ✭ 347 (+425.76%)
Mutual labels:  lint, linter
yamburger
YAML syntax got you down? That's a YAMBURGER!
Stars: ✭ 32 (-51.52%)
Mutual labels:  lint, linter
lints
Lint all your JavaScript, CSS, HTML, Markdown and Dockerfiles with a single command
Stars: ✭ 14 (-78.79%)
Mutual labels:  lint, linter
Husky.Net
Git hooks made easy with Husky.Net internal task runner! 🐶 It brings the dev-dependency concept to the .NET world!
Stars: ✭ 394 (+496.97%)
Mutual labels:  lint, linter
elm-lint
elm-lint lints Elm source code, to add additional guarantees to your project.
Stars: ✭ 27 (-59.09%)
Mutual labels:  lint, linter
mllint
`mllint` is a command-line utility to evaluate the technical quality of Python Machine Learning (ML) projects by means of static analysis of the project's repository.
Stars: ✭ 67 (+1.52%)
Mutual labels:  lint, linter
li18nt
🌎 Lint your i18n translation files. Detect conflicting properties, duplicates and make it more readable and easier to maintain by formatting it!
Stars: ✭ 29 (-56.06%)
Mutual labels:  lint, linter
rubocop-linter-action
Rubocop Linter Action: A GitHub Action to run Rubocop against your code!
Stars: ✭ 86 (+30.3%)
Mutual labels:  lint, linter

breakcheck

breakcheck checks exported values, types and function declarations in your working tree for potential breaking changes against a given git reference.

Usage

$ breakcheck --help
Example usage:
  breakcheck               # compares working tree against git head
  breakcheck --base=v1.0.0 # compares against tag v1.0.0

Flags:
  -base string
    	git reference to compare against (default "head")
  -private
    	include exported methods with private receivers
  -v	enable verbose mode

Example

Below is an example output from running breakcheck against the datadog-agent repository:

$ breakcheck --base=HEAD~40

pkg/logs/config:
  
• Removed:
    < integration_config.go:17@HEAD~40:
        const ContainerdType 

pkg/util/clusteragent:
  
• Struct field "ClusterAgentAPIEndpoint" removed in struct "DCAClient":
    < clusteragent.go:42@HEAD~40:
        struct DCAClient
    > clusteragent.go:57:
        struct DCAClient
  
• Struct field "ClusterAgentVersion" type changed from "string" to "version.Version":
    < clusteragent.go:42@HEAD~40:
        struct DCAClient
  
• Function return value (0) type changed from "*DCAClient" to "DCAClientInterface":
    < clusteragent.go:60@HEAD~40:
        func GetClusterAgentClient() (*DCAClient, error)
    > clusteragent.go:75:
        func GetClusterAgentClient() (DCAClientInterface, error)

Caveats

  • If a function's argument is changed to an alias of the same type, breakcheck will fail to detect this and will report it as a change. Technically this is not a breaking change.
  • Detecting changes in exported package level value declarations is limited to their name and type (when known).

Contributing

Contributions and feedback are very welcome, but please open an issue to discuss ideas before submitting to any work.

Similar work

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].