일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MySQL
- web3.js
- Programming
- 이더리움
- 네트워크
- erc721
- 스마트 컨트랙트
- github
- ERC20
- git
- Ethereum
- solidity
- Docker
- NFT
- Python
- blockchain
- tcp
- erc
- 트랜잭션
- 블록체인
- 제어의역전
- server
- web3
- ethers
- 솔리디티
- ERC165
- JavaScript
- truffle
- geth
- web
- Today
- Total
멍개의 연구소
hook을 이용하여 코드 스타일 검사 본문
pep을 사용해서 매번 검사를 하는건 귀찮은 일이니 이러한 작업을 커밋을 할때 검사를 하도록 훅을 만들어 보겠습니다.
git diff에서 |파이프 라인을 사용하면 cache에 대한 내용을 검사를 할 수 있습니다.
$ git statusOn branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: .app.py.swp
new file: app.py
new file: app2.py
3개의 파일을 add 했습니다
$ git diff --stahed 또는 git diff --cached # 같은 결과입니다.diff --git a/.app.py.swp b/.app.py.swp
new file mode 100644
index 0000000..6cf6386
Binary files /dev/null and b/.app.py.swp differ
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..aa07c85
--- /dev/null
+++ b/app.py
@@ -0,0 +1,41 @@
+'''
+2017.03.04
+'''
+import requests
+
+class a_test:
+ '''
+ 해당 클래스는 어쩌구 저쩌구
+ '''
+
+ def __init__(self):
+ self.aTest = 'asd'
+
+ def test(self):
+ '''
+ self.a_test를 어쩌구 저쩌구
+ '''
+ print(self.aTest)
+
+ def _test1(self):
+ ''''
+ 해당 메소드는 해당 클래스 외부로 노출이 되지 않는 메소드 입니다
+ '''
+ return self.a_test
+
+ def test2(self):
+ '''
+ something
+ '''
+ return self.a_test
+
+
+def test():
+ '''
+ test function 입니다
+ '''
+ print('test')
+
+
+if __name__ == "__main__":
+ test()
diff --git a/app2.py b/app2.py
new file mode 100644
index 0000000..5bc8d31
--- /dev/null
+++ b/app2.py
@@ -0,0 +1,3 @@
+adslkfjadfkj
+
+adsfasdf
diff를 통해 커밋 할 대상의 내용을 볼 수 있습니다. 캐시 된 내용에 한에서 린트검사를 실행해보도록 하겠습니다.
$ git diff --staged | pep8 diff
./app.py:6:1 E302 expected 2 blank lines, found1
캐시 된 내용을 pep8검사를 하였습니다. 이제 저 명령을 pre-commit에 작성을 합니다.
$ git commit -m 'asd'
./app.py:6:1: E302 expected 2 blank lines, found 1
[master d714ba1] asd
Committer: 박정태 <bagjeongtae@bagjeongtaeui-MacBook-Pro.local>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:
git config --global --edit
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
3 files changed, 44 insertions(+)
create mode 100644 .app.py.swp
create mode 100644 app.py
create mode 100644 app2.py
가정 첫번째 줄에 뜹니다. 저걸 어떻게 처리를 해야할까요?
$ vim .git/hooks/pre-commit #!/bin/sh # ...중략 FILES=$(git diff --cached | pep8 --diff) if [ -n "$FILES" ]; then echo $FILES exit 1 fi ...중략
위 코드를 추가를 해줍니다.
$ git commit -m "hooks test' ./app.py:6:1 #302 expected 2 blank lines, found 1
정상적으로 커밋이 되지 않았습니다. git diff가 존재하면 해당 값을 출력을 하고 exit1을 하기때문에 커밋이 실패가 됩니다.
훅과 pep8사용법에 대한 설명은 아래 링크를 가시면 자세히 보실 수 있습니다.
http://blog.naver.com/pjt3591oo/220949733360
http://blog.naver.com/pjt3591oo/220949825347
'서버 > 깃 & 깃허브' 카테고리의 다른 글
[github] 원격 저장소에 있는 브랜치를 로컬로 가져오는 방법 (2) | 2022.09.06 |
---|---|
git hooks(훅) (0) | 2017.05.10 |
--ammend를 이용 한 커밋 메시지 수정 + emacs 명령어 (0) | 2017.05.10 |
diff를 이용하여 변경된 소스 확인하기, reset을 이용하여 head변경 (0) | 2017.05.08 |
git 원격 저장소 바꾸기 (0) | 2017.04.28 |