質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

1回答

2900閲覧

bashでphpmdコマンドエラーになるのを解決する方法。

sato718

総合スコア5

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

0クリップ

投稿2020/03/18 12:01

編集2020/03/27 12:29

追記

コマンドプロンプト

echo $PATH /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

pre-commitファイル内

echo $PATH /Applications/Sourcetree.app/Contents/Resources/git_local/libexec/git-core:/Applications/Sourcetree.app/Contents/Resources/bin:/Applications/Sourcetree.app/Contents/Resources/git_local/bin:/Applications/Sourcetree.app/Contents/Resources/git_local/gitflow:/Applications/Sourcetree.app/Contents/Resources/git_local/git-lfs:/usr/bin:/bin:/usr/sbin:/sbin
type phpmd phpmd is /usr/local/bin/phpmd

phpmdのPATHをgit bash内で通すにはどうすれば良いのでしょうか?

前提・実現したいこと

git pre-commitでphpmを使いたいのですが、commnd not foundになります。
php -lとphp-dでエラーチェックを行いたいので、test.phpでエラー出るようにしています。
php -lは機能してエラー箇所指摘してくれます。
phpmdはコマンドが入っていないとのことで使えませんでした。
phpmd: command not found

発生している問題・エラーメッセージ

phpmdコマンドがないと言われます。
terminalで直接phpmd ***.phpで実行すると使えるのですが、pre-commitに書いてcommit実行すると以下のエラーが出ます。

git --no-optional-locks -c color.branch=false -c color.diff=false -c color.status=false -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree commit -q -F /var/folders/tw/v50sj40d0gb0wqmsbhvf05qw0000gn/T/SourceTreeTemp.W4Tu0n -a .git/hooks/pre-commit: line 16: phpmd: command not found Parse error: syntax error, unexpected 'echo' (T_ECHO) in test.php on line 6 Errors parsing test.php Completed with errors, see above

該当のソースコード

php

1<?php 2 3 4$a = "test" 5 6echo $a; 7 8?>

bash

1#!/bin/sh 2if git rev-parse --verify HEAD >/dev/null 2>&1 3then 4 against=HEAD 5else 6 # Initial commit: diff against an empty tree object 7 against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 8fi 9# Redirect output to stderr. 10exec 1>&2 11 12IS_ERROR=0 13# コミットされるファイルのうち、.phpで終わるもの 14for FILE in `git diff-index --name-status $against -- | grep -E '^[AUM].*.php$'| cut -c3-`; do 15 # PHPMDで未使用変数などのチェック 16 if ! phpmd $FILE text unusedcode,codesize,naming; then 17 IS_ERROR=1 18 fi 19 # シンタックスのチェック 20 if ! php -l $FILE; then 21 IS_ERROR=1 22 fi 23done 24exit $IS_ERROR

補足情報(FW/ツールのバージョンなど)

phpmdのインストール方法

$ brew install phpmd $ phpmd --version PHPMD 2.8.1snapshot201912271124

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/03/18 12:03

んーエラーからすると、test.phpの6行目に構文エラーとしか見えません。 test.phpのコードもご提示ください。
sato718

2020/03/18 12:22 編集

申し訳ありません説明不足でした。 test.php の6行目のエラーはわざと出しています。 エラーチェックをphp -l、phpmdでしたいのですが、php -lしか機能していないので、phpmdも使いたいという悩みです。
hoshi-takanori

2020/03/23 03:00

command not found なので、type phpmd で phpmd の場所を確認して、pre-commit で echo $PATH してその場所がパスに含まれてるか確認しましょう。
guest

回答1

0

ベストアンサー

Sourcetree から実行すると /usr/local/bin がパスに入らないんですね。うーん。
とりあえず、スクリプトの最初でパスを追加するか、phpmd をフルパスで実行するかのどちらかですね。

#!/bin/sh PATH=$PATH:/usr/local/bin # または if ! /usr/local/bin/phpmd $FILE text unusedcode,codesize,naming; then

投稿2020/03/27 16:03

hoshi-takanori

総合スコア7899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sato718

2020/03/30 11:59

スクリプトの最初でパスを追加する方法で出来ました! ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問