During the evolution of a software system, a large number of bug reports are submitted. Locating the source code files that need to be fixed to resolve the bugs is a challenging problem. Thus, there is a need for a technique that can automatically figure out these buggy files. A number of bug localization solutions that take in a bug report and output a ranked list of files sorted based on their likelihood to be buggy have been proposed in the literature. However, the accuracy of these tools still needs to be improved. In this paper, to address this need, we propose AmaLgam+, which is a method for locating relevant buggy files that puts together fives sources of information, namely, version history, similar reports, structure, stack traces, and reporter information. We perform a large-scale experiment on four open source projects, namely, AspectJ, Eclipse, SWT, and ZXing to localize more than 3000 bugs. We compare AmaLgam + with several state-of-the-art approaches including AmaLgam, BLUiR+, BRtracer+, BugLocator, and TFIDF-DHbPd. These approaches leverage one or several of the sources of information analyzed by AmaLgam+, but not all of them. On average, AmaLgam + achieves a 6.0% improvement over AmaLgam, which merges three sources of information, in terms of Mean Average Precision (MAP). For AspectJ and Eclipse datasets, in which there are many bug reports with stack traces and many reporters submit multiple bug reports, AmaLgam + achieves a 12.0% improvement over AmaLgam in terms of MAP. Compared with the other state-of-the-art approaches, AmaLgam + achieves an improvement of 20.3%, 22.5%, 33.1%, and 73.9% over BLUiR+, BRtracer+, BugLocator, and TFIDF-DHbPd in terms of MAP, respectively. they work by computing similarities between a reported bug and source code files [3][4][5][6][7][8]. The source code files are then ranked based on their similarities to a reported bug.Sisman and Kak leverage version history data for bug localization based on the intuition that files that are often buggy in the past are likely to be buggy in the future [5]. Several variants of their approach are proposed, and the best performing one is named TFIDF-DHbPd. Zhou et al. leverage similarities among bug reports for bug localization [8]. Given a new bug report, their approach, named BugLocator, finds files that are fixed to resolve similar older bug reports to locate buggy files of the new report. Saha et al. propose an approach named BLUiR, which leverages the structure of a bug report and a source code file [4]. BLUiR transforms a bug report and source code files to their constituent parts (i.e., a source code file is separated to four groups of identifiers, namely, class names, method names, variable names, and comments, and a bug report is separated to two groups of text, namely, summary and description) and employs structured information retrieval to compute their similarities. Saha et al. also propose BLUiR+ that extends BLUiR by leveraging similarities among bug reports following BugLocator. Also recently, Wong et al. present an...