관리 메뉴

멍개의 연구소

hook을 이용하여 코드 스타일 검사 본문

서버/깃 & 깃허브

hook을 이용하여 코드 스타일 검사

멍개. 2017. 5. 10. 08:32

pep을 사용해서 매번 검사를 하는건 귀찮은 일이니 이러한 작업을 커밋을 할때 검사를 하도록 훅을 만들어 보겠습니다.



git diff에서 |파이프 라인을 사용하면 cache에 대한 내용을 검사를 할 수 있습니다.


$ git status

On 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



Comments