detekt-hint alternatives and similar libraries
Based on the "Tools" category.
Alternatively, view detekt-hint alternatives based on common mentions on social networks and blogs.
-
kotlin-android-template
Android + Kotlin + Github Actions + ktlint + Detekt + Gradle Kotlin DSL + buildSrc = ❤️ -
jtransc
Bytecode to source converting Java & Kotlin code into JavaScript, C++, D, C#, PHP, AS3, Dart and Haxe and run it everywhere. Also use JVM code in your favourite language as a library. -
CrunchyCalendar
A beautiful material calendar with endless scroll, range selection and a lot more! -
MpApt
(Deprecated) :wrench: Kotlin Native/JS/JVM Annotation Processor library for Kotlin compiler plugins -
KtsRunner
Library for executing .kts files from regular Kotlin code -
BlurTutorial
Library for creating blur effects under Android UI elements -
Ostara
Ostara is a desktop application that provides various features to monitor and interact with Spring Boot Applications via Actuator. -
LiveStream-Kt (Android) 📱
LiveStream is a simple class which makes communication easy among different modules of your application. -
ktfmt-gradle
A Gradle plugin to apply ktfmt to your builds, and reformat you Kotlin source code like a glimpse 🧹🐘 -
Kotlin Telegram Bot
Telegram Bot API wrapper with handy Kotlin DSL. -
ARFaceDetection
AR-based library for Android which is capable of detecting faces and overlaying images above the user’s head -
Kotlin Bootstrap
This set of libraries is designed to help developers accomplish various tasks easier and faster -
ColdStorage
Lightweight data loading and caching library for android -
Credit Card Scanner
Android Credit Card Scanner using CameraX and ML Kit -
GradleMavenPush
Helper to upload Gradle Android Artifacts, Gradle Java Artifacts and Gradle Kotlin Artifacts to Maven repositories (JCenter, Maven Central, Corporate staging/snapshot servers and local Maven repositories). -
EasyDokkaPlugin
Gradle Script plugin to generate documentation by Dokka documentation engine in Javadoc or other formats for Java, Kotlin, Android and non-Android projects. It's very easy, you don't need to add to dependencies section additional classpath or think about compatibility issues, you don't need additional repositories also. -
KotlinW
A small wrapper for the Kotlin compiler that can be used to execute .kts scripts -
buildSrcVersions
Better Gradle dependencies management inside the IDE. Search for available updates. -
AndroidOtpView (With gradient color in lines)
Android Otp View with gradient in kotlin
Appwrite - The Open Source Firebase alternative introduces iOS support
Do you think we are missing an alternative of detekt-hint or a related project?
README
detekt-hint
Detection of design principle violations in Kotlin added as comments on pull requests.
Getting started | :checkered_flag: Roadmap | :thought_balloon: Ask a question | :book: Documentation
[ucih](images/demo.png)
detekt-hint is a plugin for detekt that includes detection of violation of programming principles. Since such violations are hard to detect with low false-positive rates, detekt-hint will provide hints during QA, minimizing noise during development. The idea is that a higher false-positive rate can be accepted if the detection could be of high value, and is easy to ignore. Detections on the architectural level of code is therefore most likely to provide value.
Through integration with Danger comments are added to the PR. Getting feedback directly on the PR makes it easy to ignore possible false-positives. Comments also include context and tips, making it easier for the developer to make the correct decisions.
Contributions are very much welcome and if you like the project - help me out with a :star:. Especially help in which rules to implement, how to implement them and how to reduce the false-positives.
Currently supported detections
:white_check_mark: Use composition instead of inheritance - Will help developer ensure Liskov Substitution Principle is not violated. Will not report if you inherit from third-party libraries.
:white_check_mark: Lack Of Cohesion of Methods - Notifies you if the LCOM value is too high.
:white_check_mark: Interface Segregation Principles - Notifies you if you implement methods that the class does not need.
:white_check_mark: Open-Closed Principle - This rule reports use of switching on enums and classes, which may be a sign of violation the open closed principle.
Interface Segregation Principle
[lcom](images/comment_isp.png)
Single Responsibility Principle
[lcom](images/comment_lackOfCohesion.png)
Open-Closed Principle
[lcom](images/comment_ocp2.png)
Using detekt-hint
If you just want to analyze some code without bothering with the Danger integration (which really defeats the purpose of the tool) head to the command line section.
With Github Actions
- Configure a detekt-hint-config.yml to include detekt-hint rules and put it in a folder called "config" in your root project folder.
config/detekt-hint-config.yml
detekt-hint:
UseCompositionInsteadOfInheritance:
active: true
yourUniquePackageName: "io.github.mkohm"
LackOfCohesionMethods:
active: true
threshold: "0.8"
InterfaceSegregationPrinciple:
active: true
OpenClosedPrinciple:
active: true
Make sure you enter your unique package name in the configuration for the UseCompositionInsteadOfInheritance rule.
- Create a github action using the detekt-hint docker action.
.github/workflows/detekt-hint.yml
name: detekt hint
on:
pull_request:
branches:
- '*'
jobs:
gradle:
strategy:
matrix:
os: [ubuntu-latest]
jdk: [11]
runs-on: ${{ matrix.os }}
if: ${{ !contains(github.event.head_commit.message, 'detekt hint skip') }}
env:
JDK_VERSION: ${{ matrix.jdk }}
steps:
- name: Checkout Repo
uses: actions/[email protected]
- name: Run detekt hint
uses: mkohm/[email protected]
with:
github-api-token: ${{ secrets.GITHUB_TOKEN }}
- Create a PR and see detekt-hint run as a separate action.
Having trouble? Please create an issue or contact me on the kotlinlang Slack (username: mkohm), and i will help you out.
With the command line
If you only want to do some analysis on your code without the power of Danger commenting on your PR you can use the tool from the command line. You must first clone detekt and detekt-hint repositories, and then build the required jars:
git clone https://github.com/Mkohm/detekt-hint && git clone https://github.com/arturbosch/detekt && cd detekt-hint && ./gradlew jar && cd ../detekt/ && ./gradlew build shadowJar && cd ..
Use the command line utility:
java -jar detekt/detekt-cli/build/libs/detekt-cli-[version]-all.jar --plugins detekt-hint/build/libs/detekt-hint-[version].jar --config detekt-hint/config/detekt.yml --classpath <your-classpath> --input <path-to-your-awesome-project>
For example:
java -jar detekt/detekt-cli/build/libs/detekt-cli-1.5.0-all.jar --plugins detekt-hint/build/libs/detekt-hint-0.0.2.jar --config detekt-hint/config/detekt.yml --classpath detekt-hint/ --input detekt-hint/
Remember to enter the latest detekt-cli version, the latest detekt-hint version and the path to your classpath and source code. Also, make sure that the detekt.yml you are using contains the unique package name in the configuration for the UseCompositionInsteadOfInheritance rule.