サクラエディタで lint

サクラエディタで lint を走らせるマクロです。
現在、編集しているファイルに対して、チェックします。
問題があれば、別ウィンドウを開いて指摘してくれます。
問題がなければ何もしません。

現在 php と js に対応しています。

PHPのチェックには php cliを使います。
http://windows.php.net/download/

jsのチェックには jshint を使います
https://nodejs.org/en/
npm install jshint

共に、パスを切ってください。
または、ソース書き換えて、呼び出せるようにしてください。

//サクラエディタで lint
//
//現在、編集しているファイルに問題があれば表示。問題なければ何もしない。
//現在 php と js に対応.
//
//作った人 rti7743
//ライセンス: NYSL / CC0 / Public Domain / ご自由に

//コマンドを実行して、その結果から、特定の文字列を含まない行だけを取得.
//return `cmd | grep -v foo`; 
function system(cmd,ignoreMessageArray)
{
	var fso = new ActiveXObject("Scripting.FileSystemObject");
	var shell = new ActiveXObject("WScript.Shell");
	
	var stdout = fso.GetTempName();
//	var stdout="c:\\temp\\aa.txt";
	
	cmd = "cmd.exe /c " + cmd + " > \"" + stdout + "\" 2>&1";
	shell.Run(cmd,0,1);

	var result = "";
	var fs = fso.OpenTextFile(stdout,1);
	while(! fs.AtEndOfStream )
	{
		var line = fs.ReadLine();
		var found = false;
		for(var i in ignoreMessageArray)
		{
			if ( line.indexOf( ignoreMessageArray[i] ) >= 0)
			{
				found = true;
			}
		}
		if (found)
		{
			continue;
		}
		result += line + "\r\n";
	}
	fs.Close();

	fso.DeleteFile(stdout);
	
	return result;
}

function main()
{
	var filename = "\"" + Editor.GetFilename() + "\"";
	var lower = Editor.GetFilename() + "*";
	lower = lower.toLowerCase();

	var result = "";
	if ( lower.indexOf('.php*') > 0 )
	{//PHPのチェックには php cliを使います
	 //DOWNLOAD http://windows.php.net/download/

		var cmd = "php -l " + filename;
		result = system(cmd,["No syntax","Errors parsing"] );
	}
	else if ( lower.indexOf('.js*') > 0 )
	{//jsのチェックには jshint を使います
	 //DOWNLOAD https://nodejs.org/en/
	 //DOWNLOAD npm install jshint
		var cmd = "jshint " + filename;
		result = system(cmd,["No syntax"]);
	}

	if(result.length >= 1)
	{
		//エラーがあれば表示
		Editor.TraceOut(result,2);
		ActivateWinOutput();
	}
}
main();