GitHub Actionsã§Pythonã®LintãšTestïŒãã¹ãïŒããšããããå®è¡
èªååã®ç¬¬äžæ©
ãã£ãšããããšæãã€ã€ããªããªãã§ããªãLintãTestã®èªååãVS Codeãšãã£ã¿ã§èšå®ããã°æ€åºããŠãããŸããããã£ããå¿ãããããŒã ã§éçºããŠãããšã人ã«ãã£ãŠèšå®ãéã£ãŠããããŒã£ãŠãªã£ããããããããŸãããã
ãããªãšãã¯ãGitHub Actions䜿ãã°ãPR(Pull RequestïŒãããã³ã«ãLintãã§ãã¯ãTestãèªåã§ãã£ãŠããããããŸãã
ãã®èšäºã§ã¯Pythonã§LintãšãTestããšããããæçã§å°å ¥ããæ¹æ³ã®èŠæžã§ããGitHub Actionsããã¹ãã«é¢ããŠã¯ããã§ã¯è©³ãã説æããŸããã®ã§ã以äžã®æžç±ãWebæ å ±ãåç §ãã ããã
ãšãããã詊éšçã«äœã£ããªããžããªã§ãã
GitHub Actionsã®èšå®
GitHubã®ActionsãšãããšããããNew workflowãã¯ãªãã¯ããŸãããã

ããã§åºãŠãããPython applicationãšãããã€ããLintãTestããã£ãŠè¯ãæ°ãããŸãã
ãšããããã»ãŒãã®ãŸãŸäœ¿ã£ãŠããŸãã
å°ã説æãããšãLintéšåã¯ä»¥äžã§ãã
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
2è¡ç®ã¯ã--selectãªãã·ã§ã³ããã®ã§ãE9,F63,F7,F82ã®ã¿ãã§ãã¯ããŠããŸãã4è¡ç®ã¯--selectãªãã·ã§ã³ãªãã®ã§ãå
šé
ç®ãã§ãã¯ããŸãã--exit-zeroãªãã·ã§ã³ãã€ããŠããã®ã§çµæã«ãããæ£åžžçµäºããŸããããã¯ãèŠåã®ã¿ãããšããæå³ã§ãã
ããå³ãããããªãã以äžãããã®èšå®ããå§ããŠãããžã§ã¯ãã«å¿ããŠå€ããŠããã®ãè¯ããããããŸããã
flake8 . --count --max-complexity=10 --max-line-length=127 --statistics --show-source
Lintèšå®
GitHub Actionsã®èšå®ã«åãããŠãšãã£ã¿ã®èšå®ã倿ŽããŠãããæ¹ãããã§ããVS Codeãšãã£ã¿ã®å Žåã¯ã以äžã®ããã«ãªããŸãã
æåã§èšå®ããŠããŸãããåŸè¿°ããpysenã䜿ããšãèªåã§èšå®ãã¡ã€ã«ãåºåã§ãããããŸãã
Test
ãã¹ãã¯pytestã䜿ããŸãããã¹ãéèŠã§ãããããšæããªãããèªåãGitHubã§å ¬éããŠããè¶£å³ãããžã§ã¯ãã§ã¯äžåãã¹ãæžããŠãªãã§ããã
testsãã£ã¬ã¯ããªãäœã£ãŠããã®äžã«ãã¹ããã¿ãŒã³ããšã«ãã¹ãã®ããã°ã©ã ãäœã£ãŠå®è¡ãããšããã®ãçµæ§ããã¿ããã¿ãŒã³ãªæ°ãããŸãã
ããå°ãç¥ããããšãã人ã¯ã以äžèšäºãæžç±ãåç §ãã ããã
ãããž
ãããžã€ããããšããããã§ããã§ããããGitHubã®ã¢ã¯ã·ã§ã³ããã³ããã§ä»¥äžã®ãããªãããžãã€ããããšãã§ããŸãã
ããã§ããã以äžããŒãžåèã«ããŸããã
ãšã«ãããããããããžã€ããã人ã¯ã以äžã®ãµã€ãã䜿ããšãããããããŸããã
pysen
PFNããã®pysenã䜿ããšãè€æ°ã®lintãã§ãã¯ãéžæã§ããããèªåæŽåœ¢ã§ããããVS Codeãšãã£ã¿ã®èšå®ãçæã§ããããšè²ã 䟿å©ã§ãæ¯èŒçç°¡åã«äœ¿ããŠè¯ãæãã§ãã
å®éã«å°ã䜿ã£ãŠã¿ãŸããããæåæžæã£ãã®ã¯gitã§ç®¡çããŠããªããšlintãã§ãã¯ãããããªããšããã§ããããã¥ã¡ã³ãã«èšèŒãªãã®ã§ãæ°ã¥ããªãäººçµæ§ãããã§ãïŒåããã°åé¡ãªãã§ããïŒã
å人çã«ã¯ãããšèŽåœçãªã®ããVS Codeãšãã£ã¿åãã®æ¡åŒµæ©èœpysen-vscodeãms-pythonãšç«¶åããç¹ã§ãããããããç¡ããã°äœãè¿·ãããªãå°å
¥ã§ããããªã®ã§ãã
以äžãåèã«ãªããŸãã
ãµã³ãã«ãšãªããªããžããªãäœæããŸãããGitHub Actionsã§pysenãèµ°ããŸãã
Ruff
Lintãã§ãã¯ã«å ããŠãFormatãã§ããRust補ã®Ruffãããããã§ããç§ã¯ãä»ã¯Linter/FormatterãšããŠã¯Ruffãã¡ã€ã³ã§äœ¿çšããŠããŸãã詳现ã¯ä»¥äžèšäºãåèã«ããŠãã ããã
ãŸãšã
èªååããããªãçæ³ã®èªååãå°å ¥ããããšããããããŸãã¯ã¡ãã£ãšãã€å ¥ããŠãåŸã ã«ãã¯ãŒã¢ããããŠããã®ãããŸããããããªæ°ãããŠããŸãããšããããã§ããŸãã¯æäœéã®ãšãããæžããŠã¿ãŸããã
åèãªã³ã¯
é¢é£èšäº
倿Žå±¥æŽ
- 2025/01/28 Ruffã«ã€ããŠè¿œèš
Discussion