{"id":13414187,"url":"https://github.com/tushartushar/DesigniteJava","last_synced_at":"2025-03-14T21:32:04.955Z","repository":{"id":50320692,"uuid":"76462410","full_name":"tushartushar/DesigniteJava","owner":"tushartushar","description":"Detects smells and computes metrics of Java code","archived":false,"fork":false,"pushed_at":"2024-04-03T10:23:26.000Z","size":20284,"stargazers_count":169,"open_issues_count":17,"forks_count":61,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-07-31T21:51:52.599Z","etag":null,"topics":["code-smells","design-smells","java","metrics","object-oriented-metrics","technical-debt"],"latest_commit_sha":null,"homepage":"https://www.designite-tools.com/products-dj","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tushartushar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-12-14T13:34:05.000Z","updated_at":"2024-07-05T13:22:09.000Z","dependencies_parsed_at":"2024-01-22T19:33:44.410Z","dependency_job_id":"f916b016-53d7-479a-a64a-89fd346b1c7f","html_url":"https://github.com/tushartushar/DesigniteJava","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tushartushar%2FDesigniteJava","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tushartushar%2FDesigniteJava/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tushartushar%2FDesigniteJava/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tushartushar%2FDesigniteJava/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tushartushar","download_url":"https://codeload.github.com/tushartushar/DesigniteJava/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221508974,"owners_count":16834807,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code-smells","design-smells","java","metrics","object-oriented-metrics","technical-debt"],"created_at":"2024-07-30T21:00:16.224Z","updated_at":"2025-03-14T21:32:04.947Z","avatar_url":"https://github.com/tushartushar.png","language":"Java","readme":"# DesigniteJava\nDesigniteJava is a code quality assessment tool for code written in Java. It detects numerous design and implementation smells. It also computes many commonly used object-oriented metrics.\n\n## Features\n* Detects 17 design smells\n\t- Imperative Abstraction\n\t- Multifaceted Abstraction\n\t- Unnecessary Abstraction\n\t- Unutilized Abstraction\n\t- Deficient Encapsulation\n\t- Unexploited Encapsulation\n\t- Broken Modularization\n\t- Cyclic-Dependent Modularization\n\t- Insufficient Modularization\n\t- Hub-like Modularization\n\t- Broken Hierarchy\n\t- Cyclic Hierarchy\n\t- Deep Hierarchy\n\t- Missing Hierarchy\n\t- Multipath Hierarchy\n\t- Rebellious Hierarchy\n\t- Wide Hierarchy\n* Detects 10 implementation smells\n\t- Abstract Function Call From Constructor\n\t- Complex Conditional\n\t- Complex Method\n\t- Empty catch clause\n\t- Long Identifier\n\t- Long Method\n\t- Long Parameter List\n\t- Long Statement\n\t- Magic Number\n\t- Missing default\n* Computes following object-oriented metrics\n\t- LOC (Lines Of Code - at method and class granularity)\n\t- CC (Cyclomatic Complexity - Method)\n\t- PC (Parameter Count - Method)\n\t- NOF (Number of Fields - Class)\n\t- NOPF (Number of Public Fields - Class)\n\t- NOM (Number of Methods - Class)\n\t- NOPM (Number of Public Methods - Class)\n\t- WMC (Weighted Methods per Class - Class)\n\t- NC (Number of Children - Class)\n\t- DIT (Depth of Inheritance Tree - Class)\n\t- LCOM (Lack of Cohesion in Methods - Class)\n\t- FANIN (Fan-in - Class)\n\t- FANOUT (Fan-out - Class)\n\t\n## Where can I get the latest release?\nYou may download the executable jar from the [Designite](https://www.designite-tools.com/products-dj) website.\n\n## Compilation\nWe use maven to develop and build this application with the help of Eclipse IDE and libraries.\nTo create a runnable jar, run the following command in the directory where the repository is cloned:\n```text\nmvn clean install\n```\nIf you use Eclipse: \n* open the project using Eclipse\n* then right-click on the project name and select 'run as \u003e maven install'\n\n## Execute the tool\nAfter the previous step is done:\n* Open terminal/command line console and run the jar\n```text\n  java -jar Designite.jar -i \u003cpath of the input source folder\u003e -o \u003cpath of the output folder\u003e\n  ```\n**Note:** Make sure that the output folder is empty. Tool deletes all the existing files in the output folder.\n\n## Notes\nThe implemented LCOM is a custom implementation to avoid the problems of existing LCOM alternatives. Traditional, LCOM value may range only between 0 and 1. However, there are many cases, when computing LCOM is not feasible and traditional implementations give value 0 giving us a false sense of satisfaction. So, when you find -1 as LCOM value for a class, this means we do not have enough information or LCOM is not applicable (for instance, for an interface). More details can be found here (though, it is an old post): https://www.tusharma.in/revisiting-lcom.html\n\n## Contribute\nFeel free to clone/fork/contribute to the DesigniteJava open-source project.\n\n## Report Bugs\nOpen an issue if you encounter a bug in the tool.\n\n## Credits\nApart from [me](http://www.tusharma.in), following people generously contributed efforts to this project.\n- Antonis Gkortzis\n- Theodore Stassinopoulos\n- Alexandra Chaniotakis\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=tushartushar/DesigniteJava\u0026type=Date)](https://star-history.com/#tushartushar/DesigniteJava\u0026Date)\n","funding_links":[],"categories":["Tools","静态分析","Language Analysis"],"sub_categories":["Java"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftushartushar%2FDesigniteJava","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftushartushar%2FDesigniteJava","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftushartushar%2FDesigniteJava/lists"}