def test_fetch_unknown(self): """Test whether commits are properly processed""" cc = CoCom('http://example.com', self.git_path, self.worktree_path) with self.assertRaises(GraalError): _ = cc.fetch(category="unknown")
def test_fetch_lizard_repository(self): """Test whether commits are properly processed via repository level""" cc = CoCom('http://example.com', self.git_path, self.worktree_path) commits = [commit for commit in cc.fetch(category="code_complexity_lizard_repository")] self.assertEqual(len(commits), 6) self.assertFalse(os.path.exists(cc.worktreepath)) for commit in commits: self.assertEqual(commit['backend_name'], 'CoCom') self.assertEqual(commit['category'], CATEGORY_COCOM_LIZARD_REPOSITORY) self.assertTrue('Author' in commit['data']) self.assertTrue('Commit' in commit['data']) self.assertFalse('files' in commit['data']) self.assertFalse('parents' in commit['data']) self.assertFalse('refs' in commit['data'])
def test_fetch_lizard_file(self): """Test whether commits are properly processed via file level""" cc = CoCom('http://example.com', self.git_path, self.worktree_path, in_paths=['perceval/backends/core/github.py']) commits = [commit for commit in cc.fetch()] self.assertEqual(len(commits), 1) self.assertFalse(os.path.exists(cc.worktreepath)) for commit in commits: self.assertEqual(commit['backend_name'], 'CoCom') self.assertEqual(commit['category'], CATEGORY_COCOM_LIZARD_FILE) self.assertEqual(commit['data']['analysis'][0]['file_path'], 'perceval/backends/core/github.py') self.assertTrue('Author' in commit['data']) self.assertTrue('Commit' in commit['data']) self.assertFalse('files' in commit['data']) self.assertFalse('parents' in commit['data']) self.assertFalse('refs' in commit['data'])
def test_fetch_analysis(self): """Test whether commits have properly set values""" cc = CoCom('http://example.com', self.git_path, self.worktree_path, details=True) commits = [commit for commit in cc.fetch()] self.assertEqual(len(commits), 6) self.assertFalse(os.path.exists(cc.worktreepath)) deleted_file_commit = commits[5] self.assertEqual(deleted_file_commit['data']['analysis'][0]['file_path'], 'perceval/backends/graal.py') self.assertEqual(deleted_file_commit['data']['analysis'][0]['blanks'], None) self.assertEqual(deleted_file_commit['data']['analysis'][0]['comments'], None) self.assertEqual(deleted_file_commit['data']['analysis'][0]['loc'], None) self.assertEqual(deleted_file_commit['data']['analysis'][0]['ccn'], None) self.assertEqual(deleted_file_commit['data']['analysis'][0]['avg_ccn'], None) self.assertEqual(deleted_file_commit['data']['analysis'][0]['avg_loc'], None) self.assertEqual(deleted_file_commit['data']['analysis'][0]['avg_tokens'], None) self.assertEqual(deleted_file_commit['data']['analysis'][0]['num_funs'], None) self.assertEqual(deleted_file_commit['data']['analysis'][0]['tokens'], None) self.assertEqual(deleted_file_commit['data']['analysis'][0]['funs'], [])
# URL for the git repo to analyze REPOSITORY_URL = "http://github.com/inishchith/MeetInTheMiddle" # directory where to mirror the repo REPO_DIR = "MeetInTheMiddle" # Cocom object initialization cocom = CoCom(uri=REPOSITORY_URL, git_path=REPO_DIR) from_date = datetime(2018, 12, 12) to_date = datetime(2018, 12, 30) # fetch all commits within range from_date <= date <= to_date # uses perceval backend to fetch commits and performs analysis on the file present in worktreepath commits = [ commit for commit in cocom.fetch(from_date=from_date, to_date=to_date) ] n_commits = len(commits) print("Number of commits: ", n_commits) first_commit = commits[0] pprint(first_commit) print(first_commit['data']['Author']) print(first_commit['data']['CommitDate']) print(first_commit['data']['message']) # Check analysis attribute i.e analysis produced by graal via lizard print("-" * 100) for commit in commits: print("Commit Message:", commit['data']['message'])
#! /usr/bin/env python3 from graal.backends.core.cocom import CoCom # URL for the git repo to analyze repo_uri = "http://github.com/chaoss/grimoirelab-graal" # directory where to mirror the repo repo_dir = "/tmp/graal-cocom" # Cocom object initialization cc = CoCom(uri=repo_uri, git_path=repo_dir) # fetch all commits commits = [commit for commit in cc.fetch()]
#! /usr/bin/env python3 from graal.backends.core.cocom import CoCom from graal.backends.core.colic import CoLic SCANCODE = 'scancode' CATEGORY_COLIC_SCANCODE = 'code_license_' + SCANCODE # URL for the git repo to analyze repo_uri = 'https://github.com/chaoss/grimoirelab-toolkit' # directory where to mirror the repo repo_dir = 'users/tanxin/github/graal-cocom' # Cocom object initialization cc = CoCom(uri=repo_uri, git_path=repo_dir) # CoLic object initialization cl = CoLic(uri=repo_uri, git_path=repo_dir, exec_path='/Users/tanxin/Downloads/scancode-toolkit-3.0.2/scancode') # fetch all commits and try Cocom for commit in cc.fetch(): print(commit) ### # fetch all commits and try scancode for commit in cl.fetch(category=CATEGORY_COLIC_SCANCODE): print(commit) ###
# This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # Author: # Sumit Kumar Jangir <*****@*****.**> #! /usr/bin/env python3 from graal.backends.core.cocom import CoCom from graal.graal import GraalCommand # setting graal argument parser parser = GraalCommand.setup_cmd_parser() arg = [ 'https://github.com/sumitskj/Prajawalan2019.git', '--git-path', '/tmp/graal-cocom' ] args = parser.parse(*arg) # Cocom object initialization cc = CoCom(uri=args.uri, git_path=args.git_path) # fetch all commits for com in cc.fetch(): print(com['data']['CommitDate'])