Comments (6)
This won't be easy to implement as detekt doesn't have the capability to scan the entire codebase and keep a context. Every rule are effectively an implementation of the visitor pattern implemented on the node of the AST.
We could extend detekt to start collecting those aggregated metrics (i.e. # of function usages vs definitions), but this is not in the roadmap
from detekt.
In my opinion, this feature might be better suited for a dedicated compiler plugin.
Technically it's possible to implement this with detekt. However, it will require more effort than just implementing a new rule. One needs to gather the information from BindingContext
or from some other Kotlin compiler APIs.
from detekt.
Won’t implement for the reasons listed above
from detekt.
Thanks @cortinico . Is there an existing issue for keeping a context through an entire source set / module / code base? Or shall I make one?
from detekt.
I think the question is more for @detekt/maintainers if we ever want to implement such capability or not
from detekt.
Agree, detekt doesn't have the capabilities. Even if we implemented all the tracking and collation necessary for this, we would be missing out on usages from Java (and Scala/Groovy/Clojure/etc.).
You can however, write an Android Lint check for this, and use it in non-Android projects too via com.android.lint
standalone plugin (see docs). That at least covers Java and .class-file usages. You can have a look at UnusedIds and UnusedResources for inspiration.
from detekt.
Related Issues (20)
- Question for new rule to check if test method is missing `@Test` annotation HOT 2
- False negative for companion object in UndocumentedPublicClass
- False negative for enum constants in UndocumentedPublic* rule group HOT 2
- UnusedPrivateProperty does not detect unused property named "logger" HOT 2
- `RedundantSuspendModifier` false-positives with extension functions HOT 3
- False-positve `UnusedImports` when there are mutiple functions of the same name
- Create a property to store the `basePath`
- Alias ObjectPropertyNaming as ObjectPropertyName
- StringLiteralDuplication potential false positive with interpolated strings HOT 3
- NamedArguments: False positive on spread varargs
- Ignore / Suppress specific magic number warning in detekt baseline.xml for a Compose function HOT 1
- detekt-core shouldn't depend on detekt-psi-utils HOT 2
- ignoreFailures doesn't work when using gradle workers
- False positive `SwallowedException` when exception is used as a receiver
- Multiline strings may occur parse error HOT 3
- "Missing new line after {" is reported incorrectly in nested lambda
- Incorrect report of error - UnsafeOptInUsageError HOT 2
- MatchingDeclarationName - Not detecting method names - Jetpack Compose HOT 10
- The issue arises when I move the detekt-baseline.xml file from its default path (project/app/detekt-baseline.xml) to a new location (project/config/detekt/detekt-baseline.xml). HOT 3
- MissingPackageDeclaration - Incorrect issue reported.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from detekt.