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'], [])
Example #5
0
# 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'])
Example #6
0
#! /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)
###
Example #8
0
# 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'])