본문 바로가기

좋아하는 것_매직IT/96.IT 핫이슈

Deprank - PageRank를 이용하여 가장 중요한 코드 찾기

반응형

Deprank - PageRank를 이용하여 가장 중요한 코드 찾기 를 소개합니다.

Deprank uses the PageRank algorithm to find the most important files in your JavaScript or TypeScript codebase.

한마디로, 구글의 PageRank 알고리듬을 사용하여 JavaScript/TypeScript 코드에서 가장 중요한 파일을 찾아내는 오픈소스 라고 머릿속에 넣어두시면 되고요..

PageRank (PR) is an algorithm used by Google Search to rank web pages in their search engine results.

다시말해서, 페이지랭크(PageRank)는 월드 와이드 웹과 같은 하이퍼링크 구조를 가지는 문서에 상대적 중요도에 따라 가중치를 부여하는 방법으로, 웹사이트 페이지의 중요도를 측정하기 위해 구글 검색에 쓰이는 알고리즘이라고 하고요.
해당 알고리즘은 서로간에 인용과 참조로 연결된 임의의 묶음에 적용할 수 있다고 하네요..

그리고, 페이지랭크는 스탠퍼드 대학교에 재학 중이던 래리 페이지와 세르게이 브린이 새로운 검색 엔진에 대한 연구 기획의 일부로 개발한 것이라고 하고요..

해당 기획은 1995년 시작되어, 1998년 구글이라 불리는 시범 서비스로 발전하였다고 하네요..
페이지와 브린은 페이지랭크에 기반한 검색 기술을 바탕으로 구글 사를 설립하였다고 하고요..

아무튼 아래는 github 내용입니다. (https://github.com/codemix/deprank)

Deprank

Deprank uses the PageRank algorithm to find the most important files in your JavaScript or TypeScript codebase. It uses dependency-cruiser to build a dependency graph of your source files, then ranks those dependencies based on their importance. We define importance as those files which are directly or indirectly depended upon the most by other files in the codebase.

Deprank is particularly useful when converting an existing JavaScript codebase to TypeScript. Performing the conversion in strict PageRank order can dramatically increase type-precision, reduce the need for any and minimizes the amount of rework that is usually inherent in converting large codebases.

Usage

Rank all files in the src directory:

npx deprank ./src

Rank all .js and .jsx files in the src and test directories:

npx deprank --ext=".js,.jsx" ./src ./test

Example

npx deprank ./fixtures
| Filename               | Lines | Dependents | PageRank |
----------------------------------------------------------
| fixtures/core.js       | 3     | 1          | 0.284098 |
| fixtures/utils.js      | 4     | 3          | 0.268437 |
| fixtures/user/user.js  | 4     | 1          | 0.132253 |
| fixtures/todo.js       | 6     | 1          | 0.089796 |
| fixtures/user/index.js | 1     | 1          | 0.089796 |
| fixtures/concepts.js   | 4     | 1          | 0.079694 |
| fixtures/index.js      | 4     | 0          | 0.055926 |

Building Locally

  1. Clone this repository: git clone git@github.com:codemix/deprank.git
  2. Get yarn.
  3. Navigate into the project folder: cd deprank/.
  4. Run yarn install && yarn build.
  5. Run ./bin/deprank --help

TypeScript Conversion

To help convert your codebase to TypeScript whilst minimizing the amount of effort required, we suggest converting files in deprank --deps-first order. This option lifts the files that are depended upon by the most important files in the codebase to the top of the list. By tackling each file in order we help ensure that type errors are solved at their origin, rather than their point of use. This can reduce the number of type errors much more quickly than the more typical, ad-hoc order that such conversions usually take, and it helps TypeScript use inference which reduces the amount of manual typing required. It's not uncommon to see hundreds or thousands of type errors disappear just by fixing a few key files.

The following command will find all .js or .jsx files in a src folder, and sort them in dependency-first order.

npx deprank --ext=".js,.jsx" --deps-first ./src



마지막으로 Deprank 의 특징을 정리하자면 아래와 같습니다. 

- 구글의 PageRank 알고리듬을 사용하여 JavaScript/TypeScript 코드에서 가장 중요한 파일을 찾아내는 오픈소스  
- dependency-cruiser 를 이용하여 소스 파일의 디펜던시 그래프를 그리고 중요도에 따라 랭크를 매김  
- 기존의 대규모 Javascript 코드를 Typescript로 변환하거나 할 때 유용  
→ PageRank 순으로 변환을 진행하면, 타입 정밀도를 높여서 any 사용과 재작업량을 줄여줌

아무튼 오늘의 블로그는 여기까지고요..
항상 믿고 봐주셔서 감사합니다.

728x90
300x250