Giter Club home page Giter Club logo

cake.issues's Introduction

Cake Issues Addin

License Documentation Join in the discussion on the Cake repository Stable Release Pre-Release) Code Coverage

The Cake.Issues addins for the Cake build automation system offer an extensive and flexible solution for reading linting issues.

Cake.Issues redefines issue management within the Cake build system by offering a comprehensive, universal, and extensible solution. The unique capabilities of the addins empower development teams to enforce coding standards, generate insightful reports, seamlessly incorporate various linting tools, and streamlining the integration with pull requests. With its modular architecture and extensive set of aliases, Cake.Issues provides a future-proof infrastructure for issue management in Cake builds, fostering a more efficient and adaptable development process.

For more information about the addins see the Cake.Issues website. For general information about the Cake build automation system see the Cake website.

Table of Contents

Background

Unique Problem Solving

Some examples how Cake.Issues can help development teams to improve code quality.

Break build on linting issues:

Cake.Issues provides a seamless integration, allowing you to enforce coding standards by breaking builds when linting issues are detected.

Reports:

Craft detailed and visually appealing reports for linting issues directly within your Cake build. The addins facilitates easy identification and resolution of linting concerns, enhancing the overall code quality.

Pull Requests integration:

Ensure linting issues are promptly addressed by having them reported as comments on pull requests. Cake.Issues bridges the gap between linting tools and version control systems, fostering efficient collaboration during code reviews.

Universal Compatibility

Build System Agnosticism:

Embrace the freedom to choose the build system that best suit your needs. If your current build system lacks tasks for reporting issues in pull requests, Cake.Issues steps in to fill that void seamlessly. In the case of using multiple CI services, Cake.Issues guarantees a consistent feature set across all of them.

Diverse Linting Tool Support:

Regardless of the linting tools you use, Cake.Issues ensures that you're not left out. Cake.Issues supports a variety of analyzers and linters, allowing you to incorporate new tools effortlessly while maintaining integration with existing ones.

Unprecedented Extensibility

Modular Architecture:

The Cake.Issues addin breaks away from the norm by offering a modular architecture. Comprising over 15 distinct addins, it presents a cohesive solution through more than 75 aliases for Cake builds, providing unparalleled flexibility.

Extensible Infrastructure:

Designed with extensibility in mind, Cake.Issues provides extension points for supporting additional analyzers, linters, report formats, and code review systems. This adaptability ensures that your build scripts can evolve with the ever-changing landscape of development tools.

Install

Integrating Cake.Issues into your Cake build is straightforward. Developers can quickly configure the addins to work with their preferred linting tools and version control system. With minimal setup, teams can enjoy the benefits of enhanced code quality management seamlessly integrated into their existing build pipeline.

The Cake Issues addins are deployed as NuGet packages.

In Cake Scripting running they can be added using the addin preprocessor directive:

#addin nuget:?package=Cake.Issues&version=x.x.x

In Cake Frosting they can be added using package references:

<PackageReference Include="Cake.Issues" Version="x.x.x" />

See list of available addins.

Compatibility

See Release Notes for requirements for each specific version.

Usage

See Website for detailed usage instructions.

Support & Discussion

For questions and to discuss ideas & feature requests, use the GitHub discussions on the Cake GitHub repository, under the Extension Q&A category.

Addins

Cake Scripting Addin Cake Frosting Addin Description
Cake.Issues Cake.Issues Addin providing the aliases for creating and reading of issues.
Cake.Issues.MsBuild Cake.Frosting.Issues.MsBuild Issue provider for reading MsBuild errors and warnings.
Cake.Issues.DocFx Cake.Frosting.Issues.DocFx Issue provider for reading DocFx warnings.
Cake.Issues.EsLint Cake.Frosting.Issues.EsLint Issue provider for reading ESLint issues.
Cake.Issues.GitRepository Cake.Frosting.Issues.GitRepository Issue provider for analyzing Git repositories.
Cake.Issues.InspectCode Cake.Frosting.Issues.InspectCode Issue provider for reading JetBrains Inspect Code issues.
Cake.Issues.Markdownlint Cake.Frosting.Issues.Markdownlint Issue provider for reading issues from markdownlint.
Cake.Issues.Sarif Cake.Frosting.Issues.Sarif Issue provider for reading SARIF reports.
Cake.Issues.Terraform Cake.Frosting.Issues.Terraform Issue provider for reading Terraform validation output.
Cake.Issues.PullRequests Cake.Frosting.Issues.PullRequests Addin providing the aliases for writing issues to pull requests and build servers.
Cake.Issues.PullRequests.AppVeyor Cake.Frosting.Issues.PullRequests.AppVeyor Integration with AppVeyor builds.
Cake.Issues.PullRequests.AzureDevOps Cake.Frosting.Issues.PullRequests.AzureDevOps Integration with Azure DevOps pull requests.
Cake.Issues.PullRequests.GitHubActions Cake.Frosting.Issues.PullRequests.GitHubActions Integration with GitHub Actions.
Cake.Issues.Reporting Cake.Frosting.Issues.Reporting Addin providing the aliases for creating reports.
Cake.Issues.Reporting.Console Cake.Frosting.Issues.Reporting.Console Support for reporting issues to the console.
Cake.Issues.Reporting.Generic Cake.Frosting.Issues.Reporting.Generic Support for creating reports in any text based format (HTML, Markdown, ...).
Cake.Issues.Reporting.Sarif Cake.Frosting.Issues.Reporting.Sarif Support for creating reports in SARIF format.

API

The Cake Issues addins provide a wide range of additional aliases which can be used in Cake builds. See API reference for an overview.

Contributing

Contributions are welcome. See Contribution Guidelines.

License

MIT License - Copyright © Cake Issues contributors

Binary distributions for some addins contain third-party code which is licensed under its own respective license. See LICENSE for details.

cake.issues's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

cake.issues's Issues

Add PriorityName to IIssue

For reporting purposes it would be helpful to have an additional property per issue which describes the priority (e.g. Warning instead of 1)

Recommended changes resulting from automated audit

We performed an automated audit of your Cake addin and found that it does not follow all the best practices.

We encourage you to make the following modifications:

  • You are currently referencing Cake.Core 0.26.0. Please upgrade to 0.28.0
  • The Cake.Core reference should be private. Specifically, your addin's .csproj should have a line similar to this: <PackageReference Include="Cake.Core" Version="0.28.0" PrivateAssets="All" />

Minify output

Generated files should be minified (HTML, CSS & JavaScript)

Build against Cake 0.26.0

Cake 0.26.0 introduced breaking changes. To support Cake versions >= 0.26.0 this addin should be built against Cake 0.26.0

Add project to IIssue

It should be possible to pass a project of an issue (eg for assembly for MsBuild warnings)

Improve issue provider infrastructure

Refactor issue provider infrastructure to provide base classes for different kind of issue providers (simple, with settings, with multiple log formats) and move as much code as possible from the issue provideres into Cake.Issues.

Embed references assemblies

All referenced assemblies need to be merged with the Cake.Issues.Reporting.Generic assembly to avoid conflicts with Cake core or any other addins

Recommended changes resulting from automated audit

We performed an automated audit of your Cake addin and found that it does not follow all the best practices.

We encourage you to make the following modifications:

  • The Cake.Core reference should be private. Specifically, your addin's .csproj should have a line similar to this: <PackageReference Include="Cake.Core" Version="0.28.0" PrivateAssets="All" />

Apologies if this is already being worked on, or if there are existing open issues, this issue was created based on what is currently published for this package on NuGet.org and in the project on github.

Replace IIssue.Project with IIssue.ProjectFileRelativePath and IIssue.ProjectName

Currently there's only an IIssue.Project property. While some provider (e.g. MsBuild) provider path and name of the project, other providers (e.g. InspectCode) can only provide project name.
It would therefore make sense to have two different properties on an issue: IIssue.ProjectFileRelativePath and IIssue.ProjectName.

Add support for pull request approval

Original issue: https://github.com/cake-contrib/Cake.Prca/issues/54

Add functionality that the pull request implementation can approve the pull request.

  • Should be option for pull request implementation to implement (maybe introduce some call where the main addin asks for capabilities)
  • Add flag to ReportCodeAnalysisIssuesToPullRequestSettings
  • Cake.Issues.PullRequests addin would determine status (maybe we need to add some settings to define the criteria, eg on priority, etc)
  • Enhance IPullRequestSystem with method to approve or decline a PR
  • Virtual implementation in PullRequestSystem which doesn't do anything

Add ProviderName to IIssue

For reporting purposes it would be helpful to have an additional property per issue which describes the provider type (e.g. MsBuild instead of Cake.Issues.MsBuild.MsBuildIssuesProvider)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.